Index: /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/actions/PurgeAction.java	(revision 13130)
@@ -160,5 +160,5 @@
                 {
                     putValue(SHORT_DESCRIPTION, tr("Add to selection"));
-                    putValue(SMALL_ICON, ImageProvider.get("dialogs", "select"));
+                    new ImageProvider("dialogs", "select").getResource().attachImageIcon(this, true);
                 }
 
Index: /trunk/src/org/openstreetmap/josm/actions/RenameLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/RenameLayerAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/actions/RenameLayerAction.java	(revision 13130)
@@ -39,5 +39,6 @@
      */
     public RenameLayerAction(File file, Layer layer) {
-        super(tr("Rename layer"), ImageProvider.get("dialogs", "edit"));
+        super(tr("Rename layer"));
+        new ImageProvider("dialogs", "edit").getResource().attachImageIcon(this, true);
         this.file = file;
         this.layer = layer;
Index: /trunk/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java	(revision 13130)
@@ -31,5 +31,6 @@
      */
     public ToggleUploadDiscouragedLayerAction(OsmDataLayer layer) {
-        super(tr("Discourage upload"), ImageProvider.get("no_upload"));
+        super(tr("Discourage upload"));
+        new ImageProvider("no_upload").getResource().attachImageIcon(this, true);
         this.layer = layer;
         setEnabled(layer.isUploadable());
Index: /trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/AddSelectionToRelations.java	(revision 13130)
@@ -31,5 +31,5 @@
     */
     public AddSelectionToRelations() {
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copyendright"));
+        new ImageProvider("dialogs/conflict", "copyendright").getResource().attachImageIcon(this, true);
         putValue(SHORT_DESCRIPTION, tr("Add all objects selected in the current dataset after the last member"));
     }
Index: /trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java	(revision 13130)
@@ -28,5 +28,5 @@
         putValue(SHORT_DESCRIPTION, tr("Download all members of the selected relations"));
         putValue(NAME, tr("Download members"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "downloadincomplete"));
+        new ImageProvider("dialogs", "downloadincomplete").getResource().attachImageIcon(this, true);
         putValue("help", ht("/Dialog/RelationList#DownloadMembers"));
     }
Index: /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/DownloadSelectedIncompleteMembersAction.java	(revision 13130)
@@ -31,5 +31,5 @@
     public DownloadSelectedIncompleteMembersAction() {
         putValue(SHORT_DESCRIPTION, tr("Download incomplete members of selected relations"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincompleteselected"));
+        new ImageProvider("dialogs/relation", "downloadincompleteselected").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Download incomplete members"));
     }
Index: /trunk/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/SelectInRelationListAction.java	(revision 13130)
@@ -22,5 +22,5 @@
         putValue(NAME, tr("Select in relation list"));
         putValue(SHORT_DESCRIPTION, tr("Select relation in relation list."));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "selectionlist"));
+        new ImageProvider("dialogs", "selectionlist").getResource().attachImageIcon(this, true);
     }
 
Index: /trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/actions/relation/SelectMembersAction.java	(revision 13130)
@@ -29,5 +29,5 @@
         putValue(SHORT_DESCRIPTION, add ? tr("Add the members of all selected relations to current selection")
                 : tr("Select the members of all selected relations"));
-        putValue(SMALL_ICON, ImageProvider.get("selectall"));
+        new ImageProvider("selectall").getResource().attachImageIcon(this, true);
         putValue(NAME, add ? tr("Select members (add)") : tr("Select members"));
         this.add = add;
Index: /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/ExtendedDialog.java	(revision 13130)
@@ -552,5 +552,5 @@
             putValue(SHORT_DESCRIPTION, tr("Show help information"));
             putValue(NAME, tr("Help"));
-            putValue(SMALL_ICON, ImageProvider.get("help"));
+            new ImageProvider("help").getResource().attachImageIcon(this, true);
             setEnabled(!Main.isOffline(OnlineResource.JOSM_WEBSITE));
         }
Index: /trunk/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/bbox/TileSelectionBBoxChooser.java	(revision 13130)
@@ -506,5 +506,5 @@
         class ApplyTileAddressAction extends AbstractAction {
             ApplyTileAddressAction() {
-                putValue(SMALL_ICON, ImageProvider.get("apply"));
+                new ImageProvider("apply").getResource().attachImageIcon(this, true);
                 putValue(SHORT_DESCRIPTION, tr("Apply the tile address"));
             }
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/AbstractListMerger.java	(revision 13130)
@@ -18,5 +18,4 @@
 import javax.swing.AbstractAction;
 import javax.swing.Action;
-import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
@@ -42,4 +41,5 @@
 import org.openstreetmap.josm.gui.widgets.OsmPrimitivesTable;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.ImageResource;
 
 /**
@@ -422,8 +422,9 @@
 
         protected CopyAction(String iconName, String actionName, String shortDescription) {
-            ImageIcon icon = ImageProvider.get("dialogs/conflict", iconName);
-            putValue(Action.SMALL_ICON, icon);
+            ImageResource icon = new ImageProvider("dialogs/conflict", iconName).getResource();
             if (icon == null) {
                 putValue(Action.NAME, actionName);
+            } else {
+                icon.attachImageIcon(this, true);
             }
             putValue(Action.SHORT_DESCRIPTION, shortDescription);
@@ -627,6 +628,5 @@
 
         CopyAllLeft() {
-            ImageIcon icon = ImageProvider.get("dialogs/conflict", "useallleft");
-            putValue(Action.SMALL_ICON, icon);
+            new ImageProvider("dialogs/conflict", "useallleft").getResource().attachImageIcon(this, true);
             putValue(Action.SHORT_DESCRIPTION, tr("Copy all my elements to the target"));
         }
@@ -656,6 +656,5 @@
 
         CopyAllRight() {
-            ImageIcon icon = ImageProvider.get("dialogs/conflict", "useallright");
-            putValue(Action.SMALL_ICON, icon);
+            new ImageProvider("dialogs/conflict", "useallright").getResource().attachImageIcon(this, true);
             putValue(Action.SHORT_DESCRIPTION, tr("Copy all their elements to the target"));
         }
@@ -685,8 +684,9 @@
 
         MoveUpMergedAction() {
-            ImageIcon icon = ImageProvider.get("dialogs/conflict", "moveup");
-            putValue(Action.SMALL_ICON, icon);
+            ImageResource icon = new ImageProvider("dialogs/conflict", "moveup").getResource();
             if (icon == null) {
                 putValue(Action.NAME, tr("Up"));
+            } else {
+                icon.attachImageIcon(this, true);
             }
             putValue(Action.SHORT_DESCRIPTION, tr("Move up the selected entries by one position."));
@@ -717,8 +717,9 @@
 
         MoveDownMergedAction() {
-            ImageIcon icon = ImageProvider.get("dialogs/conflict", "movedown");
-            putValue(Action.SMALL_ICON, icon);
+            ImageResource icon = new ImageProvider("dialogs/conflict", "movedown").getResource();
             if (icon == null) {
                 putValue(Action.NAME, tr("Down"));
+            } else {
+                icon.attachImageIcon(this, true);
             }
             putValue(Action.SHORT_DESCRIPTION, tr("Move down the selected entries by one position."));
@@ -749,8 +750,9 @@
 
         RemoveMergedAction() {
-            ImageIcon icon = ImageProvider.get("dialogs/conflict", "remove");
-            putValue(Action.SMALL_ICON, icon);
+            ImageResource icon = new ImageProvider("dialogs/conflict", "remove").getResource();
             if (icon == null) {
                 putValue(Action.NAME, tr("Remove"));
+            } else {
+                icon.attachImageIcon(this, true);
             }
             putValue(Action.SHORT_DESCRIPTION, tr("Remove the selected entries from the list of merged elements."));
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/properties/PropertiesMerger.java	(revision 13130)
@@ -346,5 +346,5 @@
     class KeepMyCoordinatesAction extends AbstractAction implements ChangeListener {
         KeepMyCoordinatesAction() {
-            putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagkeepmine"));
+            new ImageProvider("dialogs/conflict", "tagkeepmine").getResource().attachImageIcon(this, true);
             putValue(Action.SHORT_DESCRIPTION, tr("Keep my coordinates"));
         }
@@ -363,5 +363,5 @@
     class KeepTheirCoordinatesAction extends AbstractAction implements ChangeListener {
         KeepTheirCoordinatesAction() {
-            putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagkeeptheir"));
+            new ImageProvider("dialogs/conflict", "tagkeeptheir").getResource().attachImageIcon(this, true);
             putValue(Action.SHORT_DESCRIPTION, tr("Keep their coordinates"));
         }
@@ -380,5 +380,5 @@
     class UndecideCoordinateConflictAction extends AbstractAction implements ChangeListener {
         UndecideCoordinateConflictAction() {
-            putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagundecide"));
+            new ImageProvider("dialogs/conflict", "tagundecide").getResource().attachImageIcon(this, true);
             putValue(Action.SHORT_DESCRIPTION, tr("Undecide conflict between different coordinates"));
         }
@@ -397,5 +397,5 @@
     class KeepMyDeletedStateAction extends AbstractAction implements ChangeListener {
         KeepMyDeletedStateAction() {
-            putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagkeepmine"));
+            new ImageProvider("dialogs/conflict", "tagkeepmine").getResource().attachImageIcon(this, true);
             putValue(Action.SHORT_DESCRIPTION, tr("Keep my deleted state"));
         }
@@ -414,5 +414,5 @@
     class KeepTheirDeletedStateAction extends AbstractAction implements ChangeListener {
         KeepTheirDeletedStateAction() {
-            putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagkeeptheir"));
+            new ImageProvider("dialogs/conflict", "tagkeeptheir").getResource().attachImageIcon(this, true);
             putValue(Action.SHORT_DESCRIPTION, tr("Keep their deleted state"));
         }
@@ -431,5 +431,5 @@
     class UndecideDeletedStateConflictAction extends AbstractAction implements ChangeListener {
         UndecideDeletedStateConflictAction() {
-            putValue(Action.SMALL_ICON, ImageProvider.get("dialogs/conflict", "tagundecide"));
+            new ImageProvider("dialogs/conflict", "tagundecide").getResource().attachImageIcon(this, true);
             putValue(Action.SHORT_DESCRIPTION, tr("Undecide conflict between deleted state"));
         }
Index: /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/conflict/pair/tags/TagMerger.java	(revision 13130)
@@ -17,5 +17,4 @@
 import javax.swing.AbstractAction;
 import javax.swing.Action;
-import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JComponent;
@@ -33,4 +32,5 @@
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.ImageResource;
 
 /**
@@ -180,7 +180,7 @@
     class KeepMineAction extends AbstractAction implements ListSelectionListener {
         KeepMineAction() {
-            ImageIcon icon = ImageProvider.get("dialogs/conflict", "tagkeepmine");
+            ImageResource icon = new ImageProvider("dialogs/conflict", "tagkeepmine").getResource();
             if (icon != null) {
-                putValue(Action.SMALL_ICON, icon);
+                icon.attachImageIcon(this, true);
                 putValue(Action.NAME, "");
             } else {
@@ -212,7 +212,7 @@
     class KeepTheirAction extends AbstractAction implements ListSelectionListener {
         KeepTheirAction() {
-            ImageIcon icon = ImageProvider.get("dialogs/conflict", "tagkeeptheir");
+            ImageResource icon = new ImageProvider("dialogs/conflict", "tagkeeptheir").getResource();
             if (icon != null) {
-                putValue(Action.SMALL_ICON, icon);
+                icon.attachImageIcon(this, true);
                 putValue(Action.NAME, "");
             } else {
@@ -310,7 +310,7 @@
 
         UndecideAction() {
-            ImageIcon icon = ImageProvider.get("dialogs/conflict", "tagundecide");
+            ImageResource icon = new ImageProvider("dialogs/conflict", "tagundecide").getResource();
             if (icon != null) {
-                putValue(Action.SMALL_ICON, icon);
+                icon.attachImageIcon(this, true);
                 putValue(Action.NAME, "");
             } else {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/LayerListPopup.java	(revision 13130)
@@ -44,5 +44,6 @@
          */
         public InfoAction(Layer layer) {
-            super(tr("Info"), ImageProvider.get("info"));
+            super(tr("Info"));
+            new ImageProvider("info").getResource().attachImageIcon(this, true);
             putValue("help", ht("/Action/LayerInfo"));
             this.layer = layer;
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/changeset/ChangesetContentPanel.java	(revision 13130)
@@ -295,5 +295,5 @@
         DownloadObjectAction() {
             putValue(NAME, tr("Download objects"));
-            putValue(SMALL_ICON, ImageProvider.get("downloadprimitive"));
+            new ImageProvider("downloadprimitive").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Download the current version of the selected objects"));
             updateEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/DuplicateAction.java	(revision 13130)
@@ -45,5 +45,5 @@
         this.model = model;
         putValue(NAME, tr("Duplicate"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "duplicatelayer"));
+        new ImageProvider("dialogs", "duplicatelayer").getResource().attachImageIcon(this, true);
         putValue(SHORT_DESCRIPTION, tr("Duplicate this layer"));
         putValue("help", HelpUtil.ht("/Dialog/LayerList#DuplicateLayer"));
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/layer/ShowHideLayerAction.java	(revision 13130)
@@ -39,5 +39,5 @@
         this.model = model;
         putValue(NAME, tr("Show/hide"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "showhide"));
+        new ImageProvider("dialogs", "showhide").getResource().attachImageIcon(this, true);
         putValue(SHORT_DESCRIPTION, tr("Toggle visible state of the selected layer."));
         putValue("help", HelpUtil.ht("/Dialog/LayerList#ShowHideLayer"));
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 13130)
@@ -63,5 +63,4 @@
 import org.openstreetmap.josm.command.ChangePropertyCommand;
 import org.openstreetmap.josm.command.Command;
-import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.SelectionChangedListener;
 import org.openstreetmap.josm.data.osm.DefaultNameFormatter;
@@ -101,4 +100,5 @@
 import org.openstreetmap.josm.gui.widgets.PopupMenuLauncher;
 import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.tools.AlphanumComparator;
 import org.openstreetmap.josm.tools.GBC;
@@ -1126,5 +1126,5 @@
             putValue(NAME, tr("Go to OSM wiki for tag help"));
             putValue(SHORT_DESCRIPTION, tr("Launch browser with wiki help for selected object"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "search"));
+            new ImageProvider("dialogs", "search").getResource().attachImageIcon(this, true);
             putValue(ACCELERATOR_KEY, getKeyStroke());
         }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/ChildRelationBrowser.java	(revision 13130)
@@ -177,5 +177,5 @@
         EditAction() {
             putValue(SHORT_DESCRIPTION, tr("Edit the relation the currently selected relation member refers to."));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
+            new ImageProvider("dialogs", "edit").getResource().attachImageIcon(this, true);
             putValue(NAME, tr("Edit"));
             refreshEnabled();
@@ -222,5 +222,5 @@
         DownloadAllChildRelationsAction() {
             putValue(SHORT_DESCRIPTION, tr("Download all child relations (recursively)"));
-            putValue(SMALL_ICON, ImageProvider.get("download"));
+            new ImageProvider("download").getResource().attachImageIcon(this, true);
             putValue(NAME, tr("Download All Children"));
         }
@@ -245,6 +245,5 @@
             putValue(SHORT_DESCRIPTION, tr("Download selected relations"));
             // FIXME: replace with better icon
-            //
-            putValue(SMALL_ICON, ImageProvider.get("download"));
+            new ImageProvider("download").getResource().attachImageIcon(this, true);
             putValue(NAME, tr("Download Selected Children"));
             updateEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAfterSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAfterSelection.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAfterSelection.java	(revision 13130)
@@ -28,5 +28,5 @@
         super(null, memberTableModel, null, selectionTableModel, null, null, editor);
         putValue(SHORT_DESCRIPTION, tr("Add all objects selected in the current dataset after the last selected member"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copyaftercurrentright"));
+        new ImageProvider("dialogs/conflict", "copyaftercurrentright").getResource().attachImageIcon(this, true);
         updateEnabledState();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtEndAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtEndAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtEndAction.java	(revision 13130)
@@ -28,5 +28,5 @@
         super(null, memberTableModel, null, selectionTableModel, null, null, editor);
         putValue(SHORT_DESCRIPTION, tr("Add all objects selected in the current dataset after the last member"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copyendright"));
+        new ImageProvider("dialogs/conflict", "copyendright").getResource().attachImageIcon(this, true);
         updateEnabledState();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtStartAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtStartAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedAtStartAction.java	(revision 13130)
@@ -28,5 +28,5 @@
         super(null, memberTableModel, null, selectionTableModel, null, null, editor);
         putValue(SHORT_DESCRIPTION, tr("Add all objects selected in the current dataset before the first member"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copystartright"));
+        new ImageProvider("dialogs/conflict", "copystartright").getResource().attachImageIcon(this, true);
         updateEnabledState();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedBeforeSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedBeforeSelection.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/AddSelectedBeforeSelection.java	(revision 13130)
@@ -28,5 +28,5 @@
         super(null, memberTableModel, null, selectionTableModel, null, null, editor);
         putValue(SHORT_DESCRIPTION, tr("Add all objects selected in the current dataset before the first selected member"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/conflict", "copybeforecurrentright"));
+        new ImageProvider("dialogs/conflict", "copybeforecurrentright").getResource().attachImageIcon(this, true);
         updateEnabledState();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/ApplyAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/ApplyAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/ApplyAction.java	(revision 13130)
@@ -35,5 +35,5 @@
         super(memberTable, memberTableModel, tagModel, layer, editor, null);
         putValue(SHORT_DESCRIPTION, tr("Apply the current updates"));
-        putValue(SMALL_ICON, ImageProvider.get("save"));
+        new ImageProvider("save").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Apply"));
         updateEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DeleteCurrentRelationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DeleteCurrentRelationAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DeleteCurrentRelationAction.java	(revision 13130)
@@ -29,5 +29,5 @@
         super(null, null, null, layer, editor);
         putValue(SHORT_DESCRIPTION, tr("Delete the currently edited relation"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
+        new ImageProvider("dialogs", "delete").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Delete"));
         updateEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadIncompleteMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadIncompleteMembersAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadIncompleteMembersAction.java	(revision 13130)
@@ -40,5 +40,5 @@
         sc.setAccelerator(this);
         putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tr("Download all incomplete members"), sc));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincomplete"));
+        new ImageProvider("dialogs/relation", "downloadincomplete").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Download Members"));
         updateEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadSelectedIncompleteMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadSelectedIncompleteMembersAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DownloadSelectedIncompleteMembersAction.java	(revision 13130)
@@ -35,5 +35,5 @@
         super(memberTable, memberTableModel, actionMapKey, layer, editor);
         putValue(SHORT_DESCRIPTION, tr("Download selected incomplete members"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "downloadincompleteselected"));
+        new ImageProvider("dialogs/relation", "downloadincompleteselected").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Download Members"));
         updateEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DuplicateRelationAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DuplicateRelationAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/DuplicateRelationAction.java	(revision 13130)
@@ -33,5 +33,5 @@
         putValue(SHORT_DESCRIPTION, tr("Create a copy of this relation and open it in another editor window"));
         // FIXME provide an icon
-        putValue(SMALL_ICON, ImageProvider.get("duplicate"));
+        new ImageProvider("duplicate").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Duplicate"));
         setEnabled(true);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/EditAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/EditAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/EditAction.java	(revision 13130)
@@ -32,5 +32,5 @@
         super(memberTable, memberTableModel, null, layer, null);
         putValue(SHORT_DESCRIPTION, tr("Edit the relation the currently selected relation member refers to"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
+        new ImageProvider("dialogs", "edit").getResource().attachImageIcon(this, true);
         updateEnabledState();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/MoveDownAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/MoveDownAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/MoveDownAction.java	(revision 13130)
@@ -27,5 +27,5 @@
     public MoveDownAction(MemberTable memberTable, MemberTableModel memberTableModel, String actionMapKey) {
         super(memberTable, memberTableModel, actionMapKey);
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "movedown"));
+        new ImageProvider("dialogs", "movedown").getResource().attachImageIcon(this, true);
         Shortcut sc = Shortcut.registerShortcut("relationeditor:movedown", tr("Relation Editor: Move Down"), KeyEvent.VK_DOWN, Shortcut.ALT);
         sc.setAccelerator(this);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/MoveUpAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/MoveUpAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/MoveUpAction.java	(revision 13130)
@@ -27,5 +27,5 @@
     public MoveUpAction(MemberTable memberTable, MemberTableModel memberTableModel, String actionMapKey) {
         super(memberTable, memberTableModel, actionMapKey);
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "moveup"));
+        new ImageProvider("dialogs", "moveup").getResource().attachImageIcon(this, true);
         Shortcut sc = Shortcut.registerShortcut("relationeditor:moveup", tr("Relation Editor: Move Up"), KeyEvent.VK_UP, Shortcut.ALT);
         sc.setAccelerator(this);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RefreshAction.java	(revision 13130)
@@ -45,5 +45,5 @@
         // CHECKSTYLE.ON: LineLength
         putValue(SHORT_DESCRIPTION, Main.platform.makeTooltip(tr("Refresh relation from data layer"), sc));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/refresh"));
+        new ImageProvider("dialogs/refresh").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Refresh"));
         if (editor instanceof JComponent) {
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RemoveAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RemoveAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RemoveAction.java	(revision 13130)
@@ -27,5 +27,5 @@
     public RemoveAction(MemberTable memberTable, MemberTableModel memberTableModel, String actionMapKey) {
         super(memberTable, memberTableModel, actionMapKey);
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
+        new ImageProvider("dialogs", "delete").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Remove"));
         Shortcut sc = Shortcut.registerShortcut("relationeditor:remove", tr("Relation Editor: Remove"), KeyEvent.VK_DELETE, Shortcut.ALT);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RemoveSelectedAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RemoveSelectedAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/RemoveSelectedAction.java	(revision 13130)
@@ -27,5 +27,5 @@
         super(null, memberTableModel, null, selectionTableModel, null, layer, null);
         putValue(SHORT_DESCRIPTION, tr("Remove all members referring to one of the selected objects"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "deletemembers"));
+        new ImageProvider("dialogs/relation", "deletemembers").getResource().attachImageIcon(this, true);
         updateEnabledState();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/ReverseAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/ReverseAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/ReverseAction.java	(revision 13130)
@@ -24,5 +24,5 @@
         super(memberTable, memberTableModel, null);
         putValue(SHORT_DESCRIPTION, tr("Reverse the order of the relation members"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "reverse"));
+        new ImageProvider("dialogs/relation", "reverse").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Reverse"));
         updateEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SelectPrimitivesForSelectedMembersAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SelectPrimitivesForSelectedMembersAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SelectPrimitivesForSelectedMembersAction.java	(revision 13130)
@@ -27,5 +27,5 @@
         super(memberTable, memberTableModel, null, layer, null);
         putValue(SHORT_DESCRIPTION, tr("Select objects for selected relation members"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "selectprimitives"));
+        new ImageProvider("dialogs/relation", "selectprimitives").getResource().attachImageIcon(this, true);
         updateEnabledState();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SelectedMembersForSelectionAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SelectedMembersForSelectionAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SelectedMembersForSelectionAction.java	(revision 13130)
@@ -26,5 +26,5 @@
         super(null, memberTableModel, null, selectionTableModel, null, layer, null);
         putValue(SHORT_DESCRIPTION, tr("Select relation members which refer to objects in the current selection"));
-        putValue(SMALL_ICON, ImageProvider.get("dialogs/relation", "selectmembers"));
+        new ImageProvider("dialogs/relation", "selectmembers").getResource().attachImageIcon(this, true);
         updateEnabledState();
     }
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SortAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SortAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SortAction.java	(revision 13130)
@@ -26,5 +26,5 @@
     public SortAction(MemberTable memberTable, MemberTableModel memberTableModel) {
         super(memberTable, memberTableModel, null);
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "sort"));
+        new ImageProvider("dialogs", "sort").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Sort"));
         Shortcut sc = Shortcut.registerShortcut("relationeditor:sort", tr("Relation Editor: Sort"), KeyEvent.VK_END, Shortcut.ALT);
Index: /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SortBelowAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SortBelowAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/dialogs/relation/actions/SortBelowAction.java	(revision 13130)
@@ -23,5 +23,5 @@
     public SortBelowAction(MemberTable memberTable, MemberTableModel memberTableModel) {
         super(memberTable, memberTableModel, null);
-        putValue(SMALL_ICON, ImageProvider.get("dialogs", "sort_below"));
+        new ImageProvider("dialogs", "sort_below").getResource().attachImageIcon(this, true);
         putValue(NAME, tr("Sort below"));
         putValue(SHORT_DESCRIPTION, tr("Sort the selected relation members and all members below"));
Index: /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java	(revision 13130)
@@ -180,5 +180,5 @@
         AddAction() {
             putValue(NAME, tr("Create bookmark"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "bookmark-new"));
+            new ImageProvider("dialogs", "bookmark-new").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Add a bookmark for the currently selected download area"));
         }
@@ -215,5 +215,5 @@
          */
         RemoveAction() {
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
+            new ImageProvider("dialogs", "delete").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Remove the currently selected bookmarks"));
             updateEnabledState();
@@ -246,5 +246,5 @@
          */
         RenameAction() {
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
+            new ImageProvider("dialogs", "edit").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Rename the currently selected bookmark"));
             updateEnabledState();
@@ -288,5 +288,5 @@
          */
         RefreshAction() {
-            putValue(SMALL_ICON, ImageProvider.get("dialogs/changeset", "downloadchangeset"));
+            new ImageProvider("dialogs/changeset", "downloadchangeset").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Download bookmarks for my {0} last changesets", BookmarkList.MAX_CHANGESET_BOOKMARKS.get()));
             setEnabled(!UserIdentityManager.getInstance().isAnonymous());
Index: /trunk/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/download/OverpassDownloadSource.java	(revision 13130)
@@ -286,6 +286,5 @@
              */
             AddSnippetAction() {
-                super();
-                putValue(SMALL_ICON, ImageProvider.get(ACTION_IMG_SUBDIR, "add"));
+                new ImageProvider(ACTION_IMG_SUBDIR, "add").getResource().attachImageIcon(this, true);
                 putValue(SHORT_DESCRIPTION, tr("Add new snippet"));
             }
@@ -306,6 +305,5 @@
              */
             RemoveSnippetAction() {
-                super();
-                putValue(SMALL_ICON, ImageProvider.get(ACTION_IMG_SUBDIR, "delete"));
+                new ImageProvider(ACTION_IMG_SUBDIR, "delete").getResource().attachImageIcon(this, true);
                 putValue(SHORT_DESCRIPTION, tr("Delete selected snippet"));
                 checkEnabled();
@@ -340,5 +338,5 @@
             EditSnippetAction() {
                 super();
-                putValue(SMALL_ICON, ImageProvider.get(ACTION_IMG_SUBDIR, "edit"));
+                new ImageProvider(ACTION_IMG_SUBDIR, "edit").getResource().attachImageIcon(this, true);
                 putValue(SHORT_DESCRIPTION, tr("Edit selected snippet"));
                 checkEnabled();
Index: /trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/download/PlaceSelection.java	(revision 13130)
@@ -180,5 +180,5 @@
         SearchAction() {
             putValue(NAME, tr("Search ..."));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "search"));
+            new ImageProvider("dialogs", "search").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Click to start searching for places"));
             updateEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/help/HelpBrowser.java	(revision 13130)
@@ -431,5 +431,5 @@
             super(browser);
             putValue(SHORT_DESCRIPTION, tr("Open the current help page in an external browser"));
-            putValue(SMALL_ICON, ImageProvider.get("help", "internet"));
+            new ImageProvider("help", "internet").getResource().attachImageIcon(this, true);
         }
 
@@ -449,5 +449,5 @@
             super(browser);
             putValue(SHORT_DESCRIPTION, tr("Edit the current help page"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit"));
+            new ImageProvider("dialogs", "edit").getResource().attachImageIcon(this, true);
         }
 
@@ -489,5 +489,5 @@
             super(browser);
             putValue(SHORT_DESCRIPTION, tr("Reload the current help page"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
+            new ImageProvider("dialogs", "refresh").getResource().attachImageIcon(this, true);
         }
 
@@ -508,5 +508,5 @@
             browser.getHistory().addChangeListener(this);
             putValue(SHORT_DESCRIPTION, tr("Go to the previous page"));
-            putValue(SMALL_ICON, ImageProvider.get("help", "previous"));
+            new ImageProvider("help", "previous").getResource().attachImageIcon(this, true);
             setEnabled(browser.getHistory().canGoBack());
         }
@@ -533,5 +533,5 @@
             browser.getHistory().addChangeListener(this);
             putValue(SHORT_DESCRIPTION, tr("Go to the next page"));
-            putValue(SMALL_ICON, ImageProvider.get("help", "next"));
+            new ImageProvider("help", "next").getResource().attachImageIcon(this, true);
             setEnabled(browser.getHistory().canGoForward());
         }
@@ -557,5 +557,5 @@
             super(browser);
             putValue(SHORT_DESCRIPTION, tr("Go to the JOSM help home page"));
-            putValue(SMALL_ICON, ImageProvider.get("help", "home"));
+            new ImageProvider("help", "home").getResource().attachImageIcon(this, true);
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/history/NodeListViewer.java	(revision 13130)
@@ -240,5 +240,5 @@
             putValue(NAME, tr("Zoom to node"));
             putValue(SHORT_DESCRIPTION, tr("Zoom to this node in the current data layer"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "zoomin"));
+            new ImageProvider("dialogs", "zoomin").getResource().attachImageIcon(this, true);
         }
 
@@ -285,5 +285,5 @@
             putValue(NAME, tr("Show history"));
             putValue(SHORT_DESCRIPTION, tr("Open a history browser with the history of this node"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "history"));
+            new ImageProvider("dialogs", "history").getResource().attachImageIcon(this, true);
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/history/VersionInfoPanel.java	(revision 13130)
@@ -307,5 +307,7 @@
 
         OpenChangesetDialogAction(Class<? extends JComponent> componentToSelect) {
-            super(tr("Changeset"), new ImageProvider("dialogs/changeset", "changesetmanager").resetMaxSize(new Dimension(16, 16)).get());
+            super(tr("Changeset"));
+            new ImageProvider("dialogs/changeset", "changesetmanager").resetMaxSize(new Dimension(16, 16))
+                .getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Opens the Changeset Manager window for the selected changesets"));
             this.componentToSelect = componentToSelect;
Index: /trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/history/VersionTable.java	(revision 13130)
@@ -155,5 +155,5 @@
             putValue(NAME, tr("Changeset info"));
             putValue(SHORT_DESCRIPTION, tr("Launch browser with information about the changeset"));
-            putValue(SMALL_ICON, ImageProvider.get("data/changeset"));
+            new ImageProvider("data/changeset").getResource().attachImageIcon(this, true);
         }
 
@@ -192,5 +192,5 @@
             putValue(NAME, tr("User info"));
             putValue(SHORT_DESCRIPTION, tr("Launch browser with information about the user"));
-            putValue(SMALL_ICON, ImageProvider.get("data/user"));
+            new ImageProvider("data/user").getResource().attachImageIcon(this, true);
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/io/ChangesetManagementPanel.java	(revision 13130)
@@ -295,5 +295,5 @@
         RefreshAction() {
             putValue(SHORT_DESCRIPTION, tr("Load the list of your open changesets from the server"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
+            new ImageProvider("dialogs", "refresh").getResource().attachImageIcon(this, true);
         }
 
@@ -310,5 +310,5 @@
     class CloseChangesetAction extends AbstractAction implements ItemListener {
         CloseChangesetAction() {
-            putValue(SMALL_ICON, ImageProvider.get("closechangeset"));
+            new ImageProvider("closechangeset").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Close the currently selected open changeset"));
             refreshEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/io/CloseChangesetDialog.java	(revision 13130)
@@ -116,5 +116,5 @@
         CloseAction() {
             putValue(NAME, tr("Close changesets"));
-            putValue(SMALL_ICON, ImageProvider.get("closechangeset"));
+            new ImageProvider("closechangeset").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Close the selected open changesets"));
             refreshEnabledState();
@@ -142,5 +142,5 @@
         CancelAction() {
             putValue(NAME, tr("Cancel"));
-            putValue(SMALL_ICON, ImageProvider.get("cancel"));
+            new ImageProvider("cancel").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Cancel closing of changesets"));
         }
Index: /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/io/SaveLayersDialog.java	(revision 13130)
@@ -364,5 +364,5 @@
             putValue(NAME, tr("Cancel"));
             putValue(SHORT_DESCRIPTION, tr("Close this dialog and resume editing in JOSM"));
-            putValue(SMALL_ICON, ImageProvider.get("cancel"));
+            new ImageProvider("cancel").getResource().attachImageIcon(this, true);
             InputMapUtils.addEscapeAction(getRootPane(), this);
         }
@@ -398,15 +398,15 @@
                     putValue(NAME, tr("Exit now!"));
                     putValue(SHORT_DESCRIPTION, tr("Exit JOSM without saving. Unsaved changes are lost."));
-                    putValue(SMALL_ICON, ImageProvider.get("exit"));
+                    new ImageProvider("exit").getResource().attachImageIcon(this, true);
                     break;
                 case RESTART:
                     putValue(NAME, tr("Restart now!"));
                     putValue(SHORT_DESCRIPTION, tr("Restart JOSM without saving. Unsaved changes are lost."));
-                    putValue(SMALL_ICON, ImageProvider.get("restart"));
+                    new ImageProvider("restart").getResource().attachImageIcon(this, true);
                     break;
                 case DELETE:
                     putValue(NAME, tr("Delete now!"));
                     putValue(SHORT_DESCRIPTION, tr("Delete layers without saving. Unsaved changes are lost."));
-                    putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
+                    new ImageProvider("dialogs", "delete").getResource().attachImageIcon(this, true);
                     break;
             }
Index: /trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java	(revision 13130)
@@ -43,11 +43,8 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.APIDataSet;
-import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
-import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
 import org.openstreetmap.josm.data.Version;
 import org.openstreetmap.josm.data.osm.Changeset;
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
-import org.openstreetmap.josm.spi.preferences.Setting;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.HelpAwareOptionPane;
@@ -61,4 +58,7 @@
 import org.openstreetmap.josm.io.UploadStrategySpecification;
 import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
+import org.openstreetmap.josm.spi.preferences.PreferenceChangedListener;
+import org.openstreetmap.josm.spi.preferences.Setting;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.ImageOverlay;
@@ -433,5 +433,5 @@
             this.dialog = dialog;
             putValue(NAME, tr("Upload Changes"));
-            putValue(SMALL_ICON, ImageProvider.get("upload"));
+            new ImageProvider("upload").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Upload the changed primitives"));
         }
@@ -588,5 +588,5 @@
             this.dialog = dialog;
             putValue(NAME, tr("Cancel"));
-            putValue(SMALL_ICON, ImageProvider.get("cancel"));
+            new ImageProvider("cancel").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Cancel the upload and resume editing"));
         }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/CustomizeColor.java	(revision 13130)
@@ -41,5 +41,6 @@
      */
     public CustomizeColor(List<Layer> l) {
-        super(tr("Customize Color"), ImageProvider.get("colorchooser"));
+        super(tr("Customize Color"));
+        new ImageProvider("colorchooser").getResource().attachImageIcon(this, true);
         colors = l.stream().map(Layer::getColorProperty).collect(Collectors.toList());
         CheckParameterUtil.ensureThat(colors.stream().allMatch(Objects::nonNull), "All layers must have colors.");
Index: /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/Layer.java	(revision 13130)
@@ -543,5 +543,5 @@
          */
         public LayerSaveAction(Layer layer) {
-            putValue(SMALL_ICON, ImageProvider.get("save"));
+            new ImageProvider("save").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Save the current data."));
             putValue(NAME, tr("Save"));
@@ -567,5 +567,5 @@
          */
         public LayerSaveAsAction(Layer layer) {
-            putValue(SMALL_ICON, ImageProvider.get("save_as"));
+            new ImageProvider("save_as").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Save the current data to a new file."));
             putValue(NAME, tr("Save As..."));
@@ -591,5 +591,5 @@
          */
         public LayerGpxExportAction(Layer layer) {
-            putValue(SMALL_ICON, ImageProvider.get("exportgpx"));
+            new ImageProvider("exportgpx").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Export the data to GPX file."));
             putValue(NAME, tr("Export to GPX..."));
Index: /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 13130)
@@ -860,5 +860,6 @@
          */
         public ConvertToGpxLayerAction() {
-            super(tr("Convert to GPX layer"), ImageProvider.get("converttogpx"));
+            super(tr("Convert to GPX layer"));
+            new ImageProvider("converttogpx").getResource().attachImageIcon(this, true);
             putValue("help", ht("/Action/ConvertToGpxLayer"));
         }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 13130)
@@ -107,5 +107,6 @@
      */
     public CorrelateGpxWithImages(GeoImageLayer layer) {
-        super(tr("Correlate to GPX"), ImageProvider.get("dialogs/geoimage/gpx2img"));
+        super(tr("Correlate to GPX"));
+        new ImageProvider("dialogs/geoimage/gpx2img").getResource().attachImageIcon(this, true);
         this.yLayer = layer;
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java	(revision 13130)
@@ -17,5 +17,4 @@
 import javax.swing.AbstractAction;
 import javax.swing.Box;
-import javax.swing.ImageIcon;
 import javax.swing.JButton;
 import javax.swing.JComponent;
@@ -95,5 +94,5 @@
         Dimension buttonDim = new Dimension(26, 26);
 
-        ImageAction prevAction = new ImageAction(COMMAND_PREVIOUS, ImageProvider.get("dialogs", "previous"), tr("Previous"));
+        ImageAction prevAction = new ImageAction(COMMAND_PREVIOUS, new ImageProvider("dialogs", "previous"), tr("Previous"));
         btnPrevious = new JButton(prevAction);
         btnPrevious.setPreferredSize(buttonDim);
@@ -107,5 +106,5 @@
 
         final String removePhoto = tr("Remove photo from layer");
-        ImageAction delAction = new ImageAction(COMMAND_REMOVE, ImageProvider.get("dialogs", "delete"), removePhoto);
+        ImageAction delAction = new ImageAction(COMMAND_REMOVE, new ImageProvider("dialogs", "delete"), removePhoto);
         JButton btnDelete = new JButton(delAction);
         btnDelete.setPreferredSize(buttonDim);
@@ -117,5 +116,5 @@
 
         ImageAction delFromDiskAction = new ImageAction(COMMAND_REMOVE_FROM_DISK,
-                ImageProvider.get("dialogs", "geoimage/deletefromdisk"), tr("Delete image file from disk"));
+                new ImageProvider("dialogs", "geoimage/deletefromdisk"), tr("Delete image file from disk"));
         JButton btnDeleteFromDisk = new JButton(delFromDiskAction);
         btnDeleteFromDisk.setPreferredSize(buttonDim);
@@ -127,5 +126,5 @@
         btnDeleteFromDisk.getActionMap().put(deleteImage, delFromDiskAction);
 
-        ImageAction copyPathAction = new ImageAction(COMMAND_COPY_PATH, ImageProvider.get("copy"), tr("Copy image path"));
+        ImageAction copyPathAction = new ImageAction(COMMAND_COPY_PATH, new ImageProvider("copy"), tr("Copy image path"));
         JButton btnCopyPath = new JButton(copyPathAction);
         btnCopyPath.setPreferredSize(buttonDim);
@@ -137,5 +136,5 @@
         btnCopyPath.getActionMap().put(copyImage, copyPathAction);
 
-        ImageAction nextAction = new ImageAction(COMMAND_NEXT, ImageProvider.get("dialogs", "next"), tr("Next"));
+        ImageAction nextAction = new ImageAction(COMMAND_NEXT, new ImageProvider("dialogs", "next"), tr("Next"));
         btnNext = new JButton(nextAction);
         btnNext.setPreferredSize(buttonDim);
@@ -160,13 +159,13 @@
 
         tbCentre = new JToggleButton(new ImageAction(COMMAND_CENTERVIEW,
-                ImageProvider.get("dialogs", "centreview"), tr("Center view")));
+                new ImageProvider("dialogs", "centreview"), tr("Center view")));
         tbCentre.setPreferredSize(buttonDim);
 
         JButton btnZoomBestFit = new JButton(new ImageAction(COMMAND_ZOOM,
-                ImageProvider.get("dialogs", "zoom-best-fit"), tr("Zoom best fit and 1:1")));
+                new ImageProvider("dialogs", "zoom-best-fit"), tr("Zoom best fit and 1:1")));
         btnZoomBestFit.setPreferredSize(buttonDim);
 
         btnCollapse = new JButton(new ImageAction(COMMAND_COLLAPSE,
-                ImageProvider.get("dialogs", "collapse"), tr("Move dialog to the side pane")));
+                new ImageProvider("dialogs", "collapse"), tr("Move dialog to the side pane")));
         btnCollapse.setPreferredSize(new Dimension(20, 20));
         btnCollapse.setAlignmentY(Component.TOP_ALIGNMENT);
@@ -213,8 +212,10 @@
         private final String action;
 
-        ImageAction(String action, ImageIcon icon, String toolTipText) {
+        ImageAction(String action, ImageProvider provider, String toolTipText) {
             this.action = action;
             putValue(SHORT_DESCRIPTION, toolTipText);
-            putValue(SMALL_ICON, icon);
+            if (provider != null) {
+                provider.getResource().attachImageIcon(this, true);
+            }
         }
 
Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ShowThumbnailAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ShowThumbnailAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ShowThumbnailAction.java	(revision 13130)
@@ -28,5 +28,6 @@
      */
     public ShowThumbnailAction(GeoImageLayer layer) {
-        super(tr("Show thumbnails"), ImageProvider.get("dialogs/geoimage/togglegit"));
+        super(tr("Show thumbnails"));
+        new ImageProvider("dialogs/geoimage/togglegit").getResource().attachImageIcon(this, true);
         putValue(SHORT_DESCRIPTION, tr("Show image thumbnails instead of icons."));
         this.layer = layer;
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ChooseTrackVisibilityAction.java	(revision 13130)
@@ -58,5 +58,6 @@
      */
     public ChooseTrackVisibilityAction(final GpxLayer layer) {
-        super(tr("Choose visible tracks"), ImageProvider.get("dialogs/filter"));
+        super(tr("Choose visible tracks"));
+        new ImageProvider("dialogs/filter").getResource().attachImageIcon(this, true);
         this.layer = layer;
         putValue("help", ht("/Action/ChooseTrackVisibility"));
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ConvertToDataLayerAction.java	(revision 13130)
@@ -56,5 +56,6 @@
      */
     protected ConvertToDataLayerAction(final T layer) {
-        super(tr("Convert to data layer"), ImageProvider.get("converttoosm"));
+        super(tr("Convert to data layer"));
+        new ImageProvider("converttoosm").getResource().attachImageIcon(this, true);
         this.layer = layer;
         putValue("help", ht("/Action/ConvertToDataLayer"));
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/CustomizeDrawingAction.java	(revision 13130)
@@ -54,5 +54,6 @@
 
     private CustomizeDrawingAction() {
-        super(tr("Customize track drawing"), ImageProvider.get("mapmode/addsegment"));
+        super(tr("Customize track drawing"));
+        new ImageProvider("mapmode/addsegment").getResource().attachImageIcon(this, true);
         putValue("help", ht("/Action/GPXLayerCustomizeLineDrawing"));
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadWmsAlongTrackAction.java	(revision 13130)
@@ -43,5 +43,6 @@
      */
     public DownloadWmsAlongTrackAction(final GpxData data) {
-        super(tr("Precache imagery tiles along this track"), ImageProvider.get("downloadalongtrack"));
+        super(tr("Precache imagery tiles along this track"));
+        new ImageProvider("downloadalongtrack").getResource().attachImageIcon(this, true);
         this.data = data;
     }
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportAudioAction.java	(revision 13130)
@@ -69,5 +69,6 @@
      */
     public ImportAudioAction(final GpxLayer layer) {
-        super(tr("Import Audio"), ImageProvider.get("importaudio"));
+        super(tr("Import Audio"));
+        new ImageProvider("importaudio").getResource().attachImageIcon(this, true);
         this.layer = layer;
         putValue("help", ht("/Action/ImportAudio"));
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/ImportImagesAction.java	(revision 13130)
@@ -36,5 +36,6 @@
      */
     public ImportImagesAction(final GpxLayer layer) {
-        super(tr("Import images"), ImageProvider.get("dialogs/geoimage"));
+        super(tr("Import images"));
+        new ImageProvider("dialogs/geoimage").getResource().attachImageIcon(this, true);
         this.layer = layer;
         putValue("help", ht("/Action/ImportImages"));
Index: /trunk/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/gpx/MarkersFromNamedPointsAction.java	(revision 13130)
@@ -26,5 +26,6 @@
      */
     public MarkersFromNamedPointsAction(final GpxLayer layer) {
-        super(tr("Markers From Named Points"), ImageProvider.get("addmarkers"));
+        super(tr("Markers From Named Points"));
+        new ImageProvider("addmarkers").getResource().attachImageIcon(this, true);
         this.layer = layer;
         putValue("help", ht("/Action/MarkersFromNamedPoints"));
Index: /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 13130)
@@ -484,5 +484,6 @@
 
         public ShowHideMarkerText(MarkerLayer layer) {
-            super(tr("Show Text/Icons"), ImageProvider.get("dialogs", "showhide"));
+            super(tr("Show Text/Icons"));
+            new ImageProvider("dialogs", "showhide").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Toggle visible state of the marker text and icons."));
             putValue("help", ht("/Action/ShowHideTextIcons"));
@@ -515,5 +516,6 @@
          */
         SynchronizeAudio() {
-            super(tr("Synchronize Audio"), ImageProvider.get("audio-sync"));
+            super(tr("Synchronize Audio"));
+            new ImageProvider("audio-sync").getResource().attachImageIcon(this, true);
             putValue("help", ht("/Action/SynchronizeAudio"));
         }
@@ -552,5 +554,6 @@
 
         MoveAudio() {
-            super(tr("Make Audio Marker at Play Head"), ImageProvider.get("addmarkers"));
+            super(tr("Make Audio Marker at Play Head"));
+            new ImageProvider("addmarkers").getResource().attachImageIcon(this, true);
             putValue("help", ht("/Action/MakeAudioMarkerAtPlayHead"));
         }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java	(revision 13130)
@@ -1054,5 +1054,5 @@
         MoveUpDownAction(boolean isDown) {
             increment = isDown ? 1 : -1;
-            putValue(SMALL_ICON, isDown ? ImageProvider.get("dialogs", "down") : ImageProvider.get("dialogs", "up"));
+            new ImageProvider("dialogs", isDown ? "down" : "up").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, isDown ? tr("Move the selected entry one row down.") : tr("Move the selected entry one row up."));
             updateEnabledState();
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/advanced/AbstractTableListEditor.java	(revision 13130)
@@ -69,5 +69,5 @@
             putValue(NAME, tr("New"));
             putValue(SHORT_DESCRIPTION, tr("add entry"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "add"));
+            new ImageProvider("dialogs", "add").getResource().attachImageIcon(this, true);
         }
 
@@ -82,5 +82,5 @@
             putValue(NAME, tr("Remove"));
             putValue(SHORT_DESCRIPTION, tr("Remove the selected entry"));
-            putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
+            new ImageProvider("dialogs", "delete").getResource().attachImageIcon(this, true);
             updateEnabledState();
         }
Index: /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/preferences/imagery/ImageryPreference.java	(revision 13130)
@@ -503,5 +503,5 @@
                     break;
                 }
-                putValue(SMALL_ICON, ImageProvider.get("dialogs", icon));
+                new ImageProvider("dialogs", icon).getResource().attachImageIcon(this, true);
                 this.type = type;
             }
@@ -551,5 +551,5 @@
                 putValue(NAME, tr("Remove"));
                 putValue(SHORT_DESCRIPTION, tr("Remove entry"));
-                putValue(SMALL_ICON, ImageProvider.get("dialogs", "delete"));
+                new ImageProvider("dialogs", "delete").getResource().attachImageIcon(this, true);
                 updateEnabledState();
             }
@@ -581,5 +581,5 @@
                 putValue(NAME, tr("Activate"));
                 putValue(SHORT_DESCRIPTION, tr("copy selected defaults"));
-                putValue(SMALL_ICON, ImageProvider.get("preferences", "activate-down"));
+                new ImageProvider("preferences", "activate-down").getResource().attachImageIcon(this, true);
             }
 
@@ -647,5 +647,5 @@
             ReloadAction() {
                 putValue(SHORT_DESCRIPTION, tr("Update default entries"));
-                putValue(SMALL_ICON, ImageProvider.get("dialogs", "refresh"));
+                new ImageProvider("dialogs", "refresh").getResource().attachImageIcon(this, true);
             }
 
Index: /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 13129)
+++ /trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 13130)
@@ -617,5 +617,6 @@
          */
         public ToolbarButtonAction() {
-            super("", ImageProvider.get("dialogs", "pin"));
+            super("");
+            new ImageProvider("dialogs", "pin").getResource().attachImageIcon(this, true);
             putValue(SHORT_DESCRIPTION, tr("Add or remove toolbar button"));
             List<String> t = new LinkedList<>(ToolbarPreferences.getToolString());
