Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java	(revision 13986)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/AbstractMapRenderer.java	(revision 13987)
@@ -61,4 +61,7 @@
     /** Preference: minimum space (displayed way length) to display segment numbers */
     protected int segmentNumberSpace;
+
+    /** Performs slow operations by default. Can be disabled when fast partial rendering is required */
+    protected boolean doSlowOperations;
 
     /**
@@ -243,3 +246,12 @@
         }
     }
+
+    /**
+     * Sets whether slow operations such as text rendering must be performed (true by default).
+     * @param enable whether slow operations such as text rendering must be performed
+     * @since 13987
+     */
+    public final void enableSlowOperations(boolean enable) {
+        doSlowOperations = enable;
+    }
 }
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 13986)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/StyledMapRenderer.java	(revision 13987)
@@ -1553,5 +1553,5 @@
      */
     public boolean isShowNames() {
-        return showNames;
+        return showNames && doSlowOperations;
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/MapMover.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 13986)
+++ trunk/src/org/openstreetmap/josm/gui/MapMover.java	(revision 13987)
@@ -22,4 +22,5 @@
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
 import org.openstreetmap.josm.gui.MapViewState.MapViewPoint;
+import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.spi.preferences.PreferenceChangeEvent;
@@ -158,5 +159,10 @@
     }
 
-    private boolean movementInProgress() {
+    /**
+     * Determines if a map move is in progress.
+     * @return {@code true} if a map move is in progress
+     * @since 13987
+     */
+    public boolean movementInProgress() {
         return mousePosMoveStart != null;
     }
@@ -238,4 +244,5 @@
         nc.resetCursor(this);
         mousePosMoveStart = null;
+        MainApplication.getLayerManager().getLayers().forEach(Layer::invalidate);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 13986)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 13987)
@@ -80,6 +80,6 @@
 import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
 import org.openstreetmap.josm.data.osm.visitor.OsmPrimitiveVisitor;
+import org.openstreetmap.josm.data.osm.visitor.paint.AbstractMapRenderer;
 import org.openstreetmap.josm.data.osm.visitor.paint.MapRendererFactory;
-import org.openstreetmap.josm.data.osm.visitor.paint.Rendering;
 import org.openstreetmap.josm.data.osm.visitor.paint.relations.MultipolygonCache;
 import org.openstreetmap.josm.data.preferences.IntegerProperty;
@@ -493,5 +493,6 @@
         }
 
-        Rendering painter = MapRendererFactory.getInstance().createActiveRenderer(g, mv, inactive);
+        AbstractMapRenderer painter = MapRendererFactory.getInstance().createActiveRenderer(g, mv, inactive);
+        painter.enableSlowOperations(mv.getMapMover() == null || !mv.getMapMover().movementInProgress());
         painter.render(data, virtual, box);
         MainApplication.getMap().conflictDialog.paintConflicts(g, mv);
