Index: src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java
===================================================================
--- src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java   (revision 19547)
+++ src/org/openstreetmap/josm/gui/tagging/presets/TaggingPreset.java   (working copy)
@@ -284,9 +284,14 @@
             .setOptional(true)
             .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);
                             Logging.warn(e);
Index: src/org/openstreetmap/josm/tools/ImageProvider.java
===================================================================
--- src/org/openstreetmap/josm/tools/ImageProvider.java (revision 19547)
+++ src/org/openstreetmap/josm/tools/ImageProvider.java (working copy)
@@ -724,9 +724,7 @@
      * @since 13252
      */
     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);
     }

     /**