Index: /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 13199)
+++ /trunk/src/org/openstreetmap/josm/gui/NavigatableComponent.java	(revision 13200)
@@ -61,4 +61,5 @@
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.util.CursorManager;
+import org.openstreetmap.josm.gui.util.GuiHelper;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.Logging;
@@ -122,5 +123,5 @@
      * @param listener the listener. Ignored if null or already absent
      */
-    public static void removeZoomChangeListener(NavigatableComponent.ZoomChangeListener listener) {
+    public static void removeZoomChangeListener(ZoomChangeListener listener) {
         zoomChangeListeners.remove(listener);
     }
@@ -131,5 +132,5 @@
      * @param listener the listener. Ignored if null or already registered.
      */
-    public static void addZoomChangeListener(NavigatableComponent.ZoomChangeListener listener) {
+    public static void addZoomChangeListener(ZoomChangeListener listener) {
         if (listener != null) {
             zoomChangeListeners.addIfAbsent(listener);
@@ -138,7 +139,9 @@
 
     protected static void fireZoomChanged() {
-        for (ZoomChangeListener l : zoomChangeListeners) {
-            l.zoomChanged();
-        }
+        GuiHelper.runInEDTAndWait(() -> {
+            for (ZoomChangeListener l : zoomChangeListeners) {
+                l.zoomChanged();
+            }
+        });
     }
 
