Index: /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 14547)
+++ /trunk/src/org/openstreetmap/josm/gui/ImageryMenu.java	(revision 14548)
@@ -154,5 +154,5 @@
         savedLayers.sort(alphabeticImageryComparator);
         for (final ImageryInfo u : savedLayers) {
-            addDynamic(new AddImageryLayerAction(u));
+            addDynamic(trackJosmAction(new AddImageryLayerAction(u)));
         }
 
@@ -189,5 +189,5 @@
                 addDynamicSeparator();
                 for (ImageryInfo i : inViewLayers) {
-                    addDynamic(new AddImageryLayerAction(i));
+                    addDynamic(trackJosmAction(new AddImageryLayerAction(i)));
                 }
             }
@@ -262,4 +262,5 @@
      */
     private final List<Object> dynamicItems = new ArrayList<>(20);
+    private final List<JosmAction> dynJosmActions = new ArrayList<>(20);
 
     /**
@@ -268,4 +269,6 @@
      */
     private void removeDynamicItems() {
+        dynJosmActions.forEach(JosmAction::destroy);
+        dynJosmActions.clear();
         for (Object item : dynamicItems) {
             if (item instanceof JMenuItem) {
@@ -294,3 +297,11 @@
         dynamicItems.add(this.add(it));
     }
+
+    private Action trackJosmAction(Action action) {
+        if (action instanceof JosmAction) {
+            dynJosmActions.add((JosmAction) action);
+        }
+        return action;
+    }
+
 }
