Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 12173)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 12174)
@@ -669,6 +669,7 @@
             }
         }
+        // invalidate repaint cache. The layer order may have changed by this, so we invalidate every layer
+        getLayerManager().getLayers().forEach(invalidatedListener::invalidate);
         AudioPlayer.reset();
-        repaint();
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 12173)
+++ trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java	(revision 12174)
@@ -24,4 +24,6 @@
 import org.openstreetmap.josm.data.osm.Tag;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
 import org.openstreetmap.josm.gui.mappaint.styleelement.MapImage;
@@ -340,8 +342,10 @@
                 fireMapPaintSylesUpdated();
                 styles.clearCached();
-                if (Main.isDisplayingMapView()) {
-                    Main.map.mapView.preferenceChanged(null);
-                    Main.map.mapView.repaint();
-                }
+
+                // Trigger a repaint of all data layers
+                Main.getLayerManager().getLayers()
+                    .stream()
+                    .filter(layer -> layer instanceof OsmDataLayer)
+                    .forEach(Layer::invalidate);
             });
         }
