Index: trunk/src/org/openstreetmap/josm/gui/SideButton.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 9252)
+++ trunk/src/org/openstreetmap/josm/gui/SideButton.java	(revision 9253)
@@ -25,5 +25,5 @@
  */
 public class SideButton extends JButton implements Destroyable {
-    private static final int iconHeight = 20;
+    private static final int iconHeight = ImageProvider.getImageSizes(ImageProvider.ImageSizes.SIDEBUTTON).height;
 
     private transient PropertyChangeListener propertyChangeListener;
Index: trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 9252)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java	(revision 9253)
@@ -1060,4 +1060,16 @@
                 if (i != null) {
                     b.setIcon(i);
+                    Dimension s = b.getPreferredSize();
+                    /* make squared toolbar icons */
+                    if (s.width < s.height) {
+                        s.width = s.height;
+                        b.setMinimumSize(s);
+                        b.setMaximumSize(s);
+                        //b.setSize(s);
+                    } else if (s.height < s.width) {
+                        s.height = s.width;
+                        b.setMinimumSize(s);
+                        b.setMaximumSize(s);
+                    }
                 } else {
                     // hide action text if an icon is set later (necessary for delayed/background image loading)
Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 9252)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 9253)
@@ -150,5 +150,13 @@
          * @since 8323
          */
-        LAYER
+        LAYER,
+        /** Toolbar button icon size
+         * @since 9253
+         */
+        TOOLBAR,
+        /** Side button maximum height
+         * @since 9253
+         */
+        SIDEBUTTON
     }
 
@@ -348,4 +356,6 @@
         case MAPMAX: sizeval = Main.pref.getInteger("iconsize.mapmax", 48); break;
         case MAP: sizeval = Main.pref.getInteger("iconsize.mapmax", 16); break;
+        case SIDEBUTTON: sizeval = Main.pref.getInteger("iconsize.sidebutton", 20); break;
+        case TOOLBAR: /* TOOLBAR is LARGELICON - only provided in case of future changes */
         case POPUPMENU: /* POPUPMENU is LARGELICON - only provided in case of future changes */
         case LARGEICON: sizeval = Main.pref.getInteger("iconsize.largeicon", 24); break;
