Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 16997)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 16998)
@@ -1501,5 +1501,5 @@
                 Logging.log(Logging.LEVEL_ERROR, "Unable to load svg:", ex);
             }
-        });
+        }, null);
     }
 
Index: trunk/src/org/openstreetmap/josm/tools/ImageResizeMode.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageResizeMode.java	(revision 16997)
+++ trunk/src/org/openstreetmap/josm/tools/ImageResizeMode.java	(revision 16998)
@@ -4,4 +4,5 @@
 import java.awt.Dimension;
 import java.awt.Graphics2D;
+import java.awt.Image;
 import java.awt.RenderingHints;
 import java.awt.image.BufferedImage;
@@ -87,13 +88,21 @@
      * @param icon the dimensions of the image to resize
      * @param renderer the rendering function
+     * @param sourceIcon the source icon to draw
      * @return a new buffered image
      */
-    BufferedImage createBufferedImage(Dimension dim, Dimension icon, Consumer<Graphics2D> renderer) {
+    BufferedImage createBufferedImage(Dimension dim, Dimension icon, Consumer<Graphics2D> renderer, Image sourceIcon) {
         final Dimension real = computeDimension(dim, icon);
         final BufferedImage bufferedImage = new BufferedImage(real.width, real.height, BufferedImage.TYPE_INT_ARGB);
         final Graphics2D g = bufferedImage.createGraphics();
         g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
-        prepareGraphics(icon, bufferedImage, g);
-        renderer.accept(g);
+        if (renderer != null) {
+            prepareGraphics(icon, bufferedImage, g);
+            renderer.accept(g);
+        } else if (sourceIcon != null) {
+            sourceIcon = sourceIcon.getScaledInstance(real.width, real.height, Image.SCALE_SMOOTH);
+            g.drawImage(sourceIcon, 0, 0, null);
+        } else {
+            throw new NullPointerException("renderer or sourceIcon");
+        }
         return bufferedImage;
     }
Index: trunk/src/org/openstreetmap/josm/tools/ImageResource.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageResource.java	(revision 16997)
+++ trunk/src/org/openstreetmap/josm/tools/ImageResource.java	(revision 16998)
@@ -187,5 +187,5 @@
                 ImageIcon icon = new ImageIcon(baseImage);
                 img = resizeMode.createBufferedImage(dim, new Dimension(icon.getIconWidth(), icon.getIconHeight()),
-                        g -> g.drawImage(icon.getImage(), 0, 0, null));
+                        null, icon.getImage());
             }
             if (overlayInfo != null) {
