Index: src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- src/org/openstreetmap/josm/gui/MapView.java	(revision 14466)
+++ src/org/openstreetmap/josm/gui/MapView.java	(working copy)
@@ -793,6 +793,7 @@
      * Destroy this map view panel. Should be called once when it is not needed any more.
      */
     public void destroy() {
+    		
         layerManager.removeAndFireLayerChangeListener(this);
         layerManager.removeActiveLayerChangeListener(this);
         Config.getPref().removePreferenceChangeListener(this);
@@ -807,6 +808,7 @@
         }
         nonChangedLayersBuffer = null;
         offscreenBuffer = null;
+        removeAllZoomChangeListeners();
     }
 
     /**
Index: src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 14466)
+++ src/org/openstreetmap/josm/gui/NavigatableComponent.java	(working copy)
@@ -128,6 +128,16 @@
     }
 
     /**
+     * Removes a zoom change listener
+     *
+     * @param listener the listener. Ignored if null or already absent
+     */
+    protected static void removeAllZoomChangeListeners() {
+        zoomChangeListeners.clear();
+    }
+
+
+    /**
      * Adds a zoom change listener
      *
      * @param listener the listener. Ignored if null or already registered.
Index: src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(revision 14466)
+++ src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java	(working copy)
@@ -455,6 +455,7 @@
 
     @Override
     public void destroy() {
+        dialogsPanel = null;
         rememberHeight();
         closeDetachedDialog();
         if (isShowing) {
Index: src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 14466)
+++ src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(working copy)
@@ -551,6 +551,7 @@
 
     @Override
     public void destroy() {
+        taginfoAction.destroy();
         super.destroy();
         Config.getPref().removeKeyPreferenceChangeListener("display.discardable-keys", preferenceListener);
         Container parent = pluginHook.getParent();
