Index: trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java	(revision 16960)
@@ -210,4 +210,5 @@
         //
         layerList = new LayerList(model);
+        TableHelper.setFont(layerList, getClass());
         layerList.setSelectionModel(selectionModel);
         layerList.addMouseListener(new PopupMenuHandler());
@@ -919,5 +920,5 @@
             Icon icon = layer.getIcon();
             if (layerList != null && icon != null) {
-                layerList.setRowHeight(idx, Math.max(16, icon.getIconHeight()));
+                layerList.setRowHeight(idx, Math.max(layerList.getRowHeight(), icon.getIconHeight()));
             }
             selectionModel.setSelectionInterval(idx, idx);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 16960)
@@ -315,4 +315,5 @@
     private void buildTagsTable() {
         // setting up the tags table
+        TableHelper.setFont(tagTable, getClass());
         tagData.setColumnIdentifiers(new String[]{tr("Key"), tr("Value")});
         tagTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
@@ -339,4 +340,5 @@
 
     private void buildMembershipTable() {
+        TableHelper.setFont(membershipTable, getClass());
         membershipData.setColumnIdentifiers(new String[]{tr("Member Of"), tr("Role"), tr("Position")});
         membershipTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
Index: trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTable.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/dialogs/relation/SelectionTable.java	(revision 16960)
@@ -9,4 +9,6 @@
 import javax.swing.ListSelectionModel;
 import javax.swing.SwingUtilities;
+
+import org.openstreetmap.josm.gui.util.TableHelper;
 
 /**
@@ -32,4 +34,5 @@
 
     protected void build() {
+        TableHelper.setFont(this, getClass());
         setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         addMouseListener(new DoubleClickAdapter());
Index: trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 16960)
@@ -51,4 +51,5 @@
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.HistoryComboBox;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
@@ -144,4 +145,5 @@
         columnmodel = new NamedResultTableColumnModel();
         tblSearchResults = new JTable(model, columnmodel);
+        TableHelper.setFont(tblSearchResults, DownloadDialog.class);
         tblSearchResults.setSelectionModel(selectionModel);
         JScrollPane scrollPane = new JScrollPane(tblSearchResults);
Index: trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 16960)
@@ -14,4 +14,5 @@
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
 import org.openstreetmap.josm.data.osm.history.History;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 
@@ -41,4 +42,5 @@
         final NodeListTableColumnModel columnModel = new NodeListTableColumnModel();
         final JTable table = new JTable(tableModel, columnModel);
+        TableHelper.setFont(table, getClass());
         tableModel.addTableModelListener(new ReversedChangeListener(table, columnModel, tr("The nodes of this way are in reverse order")));
         table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Index: trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListViewer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListViewer.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/history/RelationMemberListViewer.java	(revision 16960)
@@ -13,4 +13,5 @@
 import org.openstreetmap.josm.data.osm.RelationMemberData;
 import org.openstreetmap.josm.data.osm.SimplePrimitiveId;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 
@@ -32,4 +33,5 @@
         final RelationMemberTableColumnModel columnModel = new RelationMemberTableColumnModel();
         final JTable table = new JTable(tableModel, columnModel);
+        TableHelper.setFont(table, getClass());
         tableModel.addTableModelListener(new ReversedChangeListener(
                 table, columnModel, tr("The members of this relation are in reverse order")));
Index: trunk/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/history/TagInfoViewer.java	(revision 16960)
@@ -25,4 +25,5 @@
 import org.openstreetmap.josm.gui.dialogs.properties.HelpTagAction;
 import org.openstreetmap.josm.gui.dialogs.properties.TaginfoAction;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 
@@ -67,4 +68,5 @@
         TagTableModel tagTableModel = model.getTagTableModel(pointInTime);
         JTable table = new JTable(tagTableModel, new TagTableColumnModel());
+        TableHelper.setFont(table, getClass());
         table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
         selectionSynchronizer.participateInSynchronizedSelection(table.getSelectionModel());
Index: trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 16960)
@@ -34,4 +34,5 @@
 import org.openstreetmap.josm.data.osm.history.HistoryOsmPrimitive;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.io.XmlWriter;
@@ -69,4 +70,5 @@
         setShowGrid(false);
         setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+        TableHelper.setFont(this, getClass());
         GuiHelper.setBackgroundReadable(this, UIManager.getColor("Button.background"));
         setIntercellSpacing(new Dimension(6, 0));
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 16960)
@@ -318,4 +318,5 @@
             super(model);
             this.content = content;
+            TableHelper.setFont(this, getClass());
         }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/imagery/WMTSLayerSelection.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/imagery/WMTSLayerSelection.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/layer/imagery/WMTSLayerSelection.java	(revision 16960)
@@ -24,4 +24,5 @@
 
 import org.openstreetmap.josm.data.imagery.WMTSTileSource.Layer;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.JosmTextArea;
 import org.openstreetmap.josm.tools.GBC;
@@ -96,4 +97,5 @@
         list = new JTable(
                 new AbstractTableModelExtension(layers));
+        TableHelper.setFont(list, getClass());
         list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
         list.setAutoCreateRowSorter(true);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 16960)
@@ -338,4 +338,5 @@
         iconPathsModel = new IconPathTableModel(selectionModel);
         tblIconPaths = new JTable(iconPathsModel);
+        TableHelper.setFont(tblIconPaths, getClass());
         tblIconPaths.setSelectionModel(selectionModel);
         tblIconPaths.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java	(revision 16960)
@@ -23,4 +23,5 @@
 import javax.swing.table.TableCellEditor;
 
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
@@ -55,4 +56,5 @@
         tableModel = newTableModel();
         table = new JTable(tableModel);
+        TableHelper.setFont(table, PreferencesTable.class);
         setContent(build(), false);
     }
Index: trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/advanced/ListEditor.java	(revision 16960)
@@ -16,4 +16,5 @@
 import javax.swing.table.AbstractTableModel;
 
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.spi.preferences.ListSetting;
@@ -51,4 +52,5 @@
         p.add(new JLabel(tr("Key: {0}", entry.getKey())), GBC.eol().insets(0, 0, 5, 0));
         JTable table = new JTable(model);
+        TableHelper.setFont(table, getClass());
         table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
         table.setTableHeader(null);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/advanced/PreferencesTable.java	(revision 16960)
@@ -31,4 +31,5 @@
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.spi.preferences.ListListSetting;
@@ -59,4 +60,5 @@
         getColumnModel().getColumn(1).setCellEditor(new SettingCellEditor());
 
+        TableHelper.setFont(this, getClass());
         addMouseListener(new MouseAdapter() {
             @Override public void mouseClicked(MouseEvent e) {
Index: trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java	(revision 16960)
@@ -53,5 +53,7 @@
 import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
 import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
+import org.openstreetmap.josm.gui.preferences.advanced.PreferencesTable;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.FilterField;
 import org.openstreetmap.josm.tools.CheckParameterUtil;
@@ -307,4 +309,5 @@
 
         colors = new JTable(tableModel);
+        TableHelper.setFont(colors, PreferencesTable.class);
         colors.setAutoCreateRowSorter(true);
         FilterField colorFilter = new FilterField().filter(colors, tableModel);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CacheSettingsPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CacheSettingsPanel.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/CacheSettingsPanel.java	(revision 16960)
@@ -40,4 +40,5 @@
 import org.openstreetmap.josm.gui.layer.WMTSLayer;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.ButtonColumn;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
@@ -147,4 +148,5 @@
     private static JTable getTableForCache(final CacheAccess<String, BufferedImageCacheEntry> cache, final TableModel tableModel) {
         final JTable ret = new JTable(tableModel);
+        TableHelper.setFont(ret, CacheSettingsPanel.class);
 
         ButtonColumn buttonColumn = new ButtonColumn(
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 16960)
@@ -41,4 +41,5 @@
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Logging;
@@ -198,4 +199,5 @@
                 }
             };
+            TableHelper.setFont(list, getClass());
             JScrollPane scroll = new JScrollPane(list);
             add(scroll, GBC.eol().fill(GridBagConstraints.BOTH));
Index: trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryProvidersPanel.java	(revision 16960)
@@ -62,4 +62,5 @@
 import org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.FilterField;
 import org.openstreetmap.josm.gui.widgets.HtmlPanel;
@@ -224,8 +225,10 @@
             }
         };
+        TableHelper.setFont(activeTable, getClass());
         activeTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
 
         defaultModel = new ImageryDefaultLayerTableModel();
         defaultTable = new JTable(defaultModel);
+        TableHelper.setFont(defaultTable, getClass());
         defaultTable.setAutoCreateRowSorter(true);
         defaultFilter = new FilterField().filter(defaultTable, defaultModel);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeSelectionPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeSelectionPanel.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/projection/CodeSelectionPanel.java	(revision 16960)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.data.projection.Projections;
 import org.openstreetmap.josm.gui.preferences.projection.CodeProjectionChoice.CodeComparator;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.JosmTextField;
 import org.openstreetmap.josm.tools.GBC;
@@ -97,4 +98,5 @@
 
         table = new JTable(model);
+        TableHelper.setFont(table, getClass());
         table.setAutoCreateRowSorter(true);
         JScrollPane scroll = new JScrollPane(table);
Index: trunk/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/shortcut/PrefJPanel.java	(revision 16960)
@@ -41,4 +41,5 @@
 import org.openstreetmap.josm.data.preferences.NamedColorProperty;
 import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.util.TableHelper;
 import org.openstreetmap.josm.gui.widgets.FilterField;
 import org.openstreetmap.josm.gui.widgets.JosmComboBox;
@@ -194,4 +195,5 @@
 
         // This is the list of shortcuts:
+        TableHelper.setFont(shortcutTable, getClass());
         shortcutTable.setModel(model);
         shortcutTable.getSelectionModel().addListSelectionListener(action);
Index: trunk/src/org/openstreetmap/josm/gui/util/TableHelper.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/util/TableHelper.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/util/TableHelper.java	(revision 16960)
@@ -3,4 +3,5 @@
 
 import java.awt.Component;
+import java.awt.Font;
 import java.util.stream.IntStream;
 
@@ -14,4 +15,5 @@
 
 import org.openstreetmap.josm.gui.dialogs.IEnabledStateUpdating;
+import org.openstreetmap.josm.spi.preferences.Config;
 
 /**
@@ -162,3 +164,22 @@
         selectionModel.setValueIsAdjusting(false);
     }
+
+    /**
+     * Sets the table font size based on the font scaling from the preferences
+     * @param table the table
+     * @param parent the parent component used for determining the preference key
+     * @see JTable#setFont(Font)
+     * @see JTable#setRowHeight(int)
+     */
+    public static void setFont(JTable table, Class<? extends Component> parent) {
+        double fontFactor = Config.getPref().getDouble("gui.scale.table.font",
+                Config.getPref().getDouble("gui.scale.table." + parent.getSimpleName() + ".font", 1.0));
+        if (fontFactor == 1.0) {
+            return;
+        }
+        Font font = table.getFont();
+        table.setFont(font.deriveFont((float) (font.getSize2D() * fontFactor)));
+        // need to setRowHeight, see comment in javax.swing.plaf.basic.BasicTableUI.installDefaults
+        table.setRowHeight((int) (table.getRowHeight() * fontFactor));
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/widgets/JosmTable.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/widgets/JosmTable.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/gui/widgets/JosmTable.java	(revision 16960)
@@ -17,4 +17,6 @@
 import javax.swing.table.TableModel;
 
+import org.openstreetmap.josm.gui.util.TableHelper;
+
 /**
  * Generic table offering custom cell navigation features.
@@ -34,4 +36,5 @@
     protected JosmTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm) {
         super(dm, cm, sm);
+        TableHelper.setFont(this, getClass());
     }
 
Index: trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 16959)
+++ trunk/src/org/openstreetmap/josm/io/remotecontrol/AddTagsDialog.java	(revision 16960)
@@ -194,4 +194,5 @@
         };
 
+        TableHelper.setFont(propertyTable, getClass());
         propertyTable.setAutoCreateRowSorter(true);
         propertyTable.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
