Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 11027)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 11028)
@@ -472,14 +472,9 @@
             paintPreferencesChanged = false;
         }
-        canUseBuffer = canUseBuffer && nonChangedLayers.size() <= nonChangedLayersCount &&
-        lastViewID == getViewID() && lastClipBounds.contains(g.getClipBounds());
-        if (canUseBuffer) {
-            for (int i = 0; i < nonChangedLayers.size(); i++) {
-                if (visibleLayers.get(i) != nonChangedLayers.get(i)) {
-                    canUseBuffer = false;
-                    break;
-                }
-            }
-        }
+        canUseBuffer = canUseBuffer
+                && nonChangedLayers.size() <= nonChangedLayersCount
+                && lastViewID == getViewID()
+                && lastClipBounds.contains(g.getClipBounds())
+                && nonChangedLayers.equals(visibleLayers.subList(0, nonChangedLayers.size()));
 
         if (null == offscreenBuffer || offscreenBuffer.getWidth() != getWidth() || offscreenBuffer.getHeight() != getHeight()) {
@@ -516,7 +511,5 @@
 
         nonChangedLayers.clear();
-        for (int i = 0; i < nonChangedLayersCount; i++) {
-            nonChangedLayers.add(visibleLayers.get(i));
-        }
+        nonChangedLayers.addAll(visibleLayers.subList(0, nonChangedLayersCount));
         lastViewID = getViewID();
         lastClipBounds = g.getClipBounds();
