Index: trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 19547)
+++ trunk/src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java	(revision 19548)
@@ -285,7 +285,12 @@
             .getResourceAsync(result -> {
                 if (result != null) {
+                    // Pre-render off EDT to avoid flooding the event queue with expensive SVG rendering
+                    ImageIcon small = result.getImageIcon(ImageProvider.ImageSizes.SMALLICON.getImageDimension());
+                    ImageIcon large = result.getImageIcon(ImageProvider.ImageSizes.LARGEICON.getImageDimension());
                     GuiHelper.runInEDT(() -> {
                         try {
-                            result.attachImageIcon(this, true);
+                            putValue(Action.SMALL_ICON, small);
+                            putValue(Action.LARGE_ICON_KEY, large);
+                            putValue("ImageResource", result);
                         } catch (IllegalArgumentException e) {
                             Logging.warn(toString() + ": " + PRESET_ICON_ERROR_MSG_PREFIX + iconName);
Index: trunk/src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 19547)
+++ trunk/src/org/openstreetmap/josm/tools/ImageProvider.java	(revision 19548)
@@ -725,7 +725,5 @@
      */
     public CompletableFuture<Void> getResourceAsync(Consumer<? super ImageResource> action) {
-        return isRemote()
-                ? CompletableFuture.supplyAsync(this::getResource, IMAGE_FETCHER).thenAcceptAsync(action, IMAGE_FETCHER)
-                : CompletableFuture.completedFuture(getResource()).thenAccept(action);
+        return CompletableFuture.supplyAsync(this::getResource, IMAGE_FETCHER).thenAcceptAsync(action, IMAGE_FETCHER);
     }
 
