Index: /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 17177)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java	(revision 17178)
@@ -4,4 +4,5 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Container;
@@ -218,14 +219,15 @@
         private void buildPanel() {
             setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
-            add(buildHtmlPanel(preferenceSetting.getTitle(), Font.BOLD),
-                    GBC.eol().insets(0, 5, 0, 10).anchor(GBC.NORTHWEST).fill(GBC.HORIZONTAL));
-            add(buildHtmlPanel(preferenceSetting.getDescription(), Font.ITALIC),
-                    GBC.eol().insets(5, 0, 5, 20).fill(GBC.HORIZONTAL));
-        }
-
-        private static JLabel buildHtmlPanel(String text, int fontStyle) {
-            JLabel label = new JLabel("<html>" + text + "</html>");
-            label.setFont(label.getFont().deriveFont(fontStyle));
-            return label;
+            JPanel headerPanel = new JPanel(new BorderLayout());
+            add(headerPanel, GBC.eop().fill(GBC.HORIZONTAL));
+
+            JLabel label = new JLabel("<html>" +
+                    "<b>" + preferenceSetting.getTitle() + "</b><br>" +
+                    "<i>" + preferenceSetting.getDescription() + "</i></html>");
+            label.setFont(label.getFont().deriveFont(Font.PLAIN));
+            headerPanel.add(label, BorderLayout.CENTER);
+
+            ImageIcon icon = preferenceSetting.getIcon(ImageProvider.ImageSizes.SETTINGS_TAB);
+            headerPanel.add(new JLabel(icon), BorderLayout.EAST);
         }
 
@@ -499,8 +501,6 @@
         int position = index;
         for (PreferenceTab tab : tabs) {
-            if (tab.getTabPreferenceSetting().equals(tps) && tps.getIconName() != null) {
-                insertTab(null, icon, tab.getComponent(), tps.getTooltip(), position++);
-            } else if (tab.getTabPreferenceSetting().equals(tps)) {
-                insertTab(tps.getTitle(), null, tab.getComponent(), tps.getTooltip(), position++);
+            if (tab.getTabPreferenceSetting().equals(tps)) {
+                insertTab(tps.getTitle(), icon, tab.getComponent(), tps.getTooltip(), position++);
             }
         }
@@ -519,19 +519,11 @@
                 TabPreferenceSetting tps = (TabPreferenceSetting) setting;
                 if (expert || !tps.isExpert()) {
-                    // Get icon
-                    String iconName = tps.getIconName();
-                    ImageIcon icon = null;
-
-                    if (iconName != null && !iconName.isEmpty()) {
-                        icon = ImageProvider.get("preferences", iconName, ImageProvider.ImageSizes.SETTINGS_TAB);
-                    }
+                    ImageIcon icon = tps.getIcon(ImageProvider.ImageSizes.LARGEICON);
                     if (settingsInitialized.contains(tps)) {
                         // If it has been initialized, add corresponding tab(s)
                         addGUITabsForSetting(icon, tps);
-                    } else if (tps.getIconName() != null) {
+                    } else {
                         // If it has not been initialized, create an empty tab with only icon and tooltip
-                        addTab(null, icon, new PreferencePanel(tps), tps.getTooltip());
-                    } else {
-                        addTab(tps.getTitle(), null, new PreferencePanel(tps), tps.getTooltip());
+                        addTab(tps.getTitle(), icon, new PreferencePanel(tps), tps.getTooltip());
                     }
                 }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/TabPreferenceSetting.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/TabPreferenceSetting.java	(revision 17177)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/TabPreferenceSetting.java	(revision 17178)
@@ -3,4 +3,8 @@
 
 import java.awt.Component;
+
+import javax.swing.ImageIcon;
+
+import org.openstreetmap.josm.tools.ImageProvider;
 
 /**
@@ -16,4 +20,14 @@
      */
     String getIconName();
+
+    /**
+     * Returns the icon for this preference setting
+     * @param size the icon size
+     * @return the icon or {@code null}
+     */
+    default ImageIcon getIcon(ImageProvider.ImageSizes size) {
+        String iconName = getIconName();
+        return iconName == null || iconName.isEmpty() ? null : ImageProvider.get("preferences", iconName, size);
+    }
 
     /**
