Index: trunk/src/org/openstreetmap/josm/gui/MapSlider.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapSlider.java	(revision 14477)
+++ trunk/src/org/openstreetmap/josm/gui/MapSlider.java	(revision 14478)
@@ -11,11 +11,12 @@
 import javax.swing.event.ChangeListener;
 
+import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
 import org.openstreetmap.josm.gui.help.Helpful;
-import org.openstreetmap.josm.gui.NavigatableComponent.ZoomChangeListener;
+import org.openstreetmap.josm.tools.Destroyable;
 
 /**
  * This is the slider used in the top left corner of the map view. It allows the user to select the scale
  */
-class MapSlider extends JSlider implements ZoomChangeListener, ChangeListener, Helpful {
+class MapSlider extends JSlider implements ZoomChangeListener, ChangeListener, Helpful, Destroyable {
 
     private static final double ZOOM_STEP = 1.1;
@@ -69,3 +70,10 @@
         return ht("/MapView/Slider");
     }
+
+    /**
+     * Free resources
+     */
+    public void destroy() {
+        NavigatableComponent.removeZoomChangeListener(this);
+    }
 }
Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 14477)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 14478)
@@ -71,4 +71,5 @@
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.MapPaintSylesUpdateListener;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.io.audio.AudioPlayer;
 import org.openstreetmap.josm.spi.preferences.Config;
@@ -808,4 +809,5 @@
         nonChangedLayersBuffer = null;
         offscreenBuffer = null;
+        GuiHelper.destroyComponents(this, false);
     }
 
