Index: trunk/src/org/openstreetmap/josm/gui/MapView.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 3117)
+++ trunk/src/org/openstreetmap/josm/gui/MapView.java	(revision 3118)
@@ -182,4 +182,5 @@
     // Layers that wasn't changed since last paint
     private final List<Layer> nonChangedLayers = new ArrayList<Layer>();
+    private int lastViewID;
 
     public MapView() {
@@ -471,5 +472,5 @@
         }
 
-        boolean canUseBuffer = nonChangedLayers.size() <= nonChangedLayersCount;
+        boolean canUseBuffer = nonChangedLayers.size() <= nonChangedLayersCount && lastViewID == getViewID();
         if (canUseBuffer) {
             for (int i=0; i<nonChangedLayers.size(); i++) {
@@ -509,4 +510,5 @@
             nonChangedLayers.add(visibleLayers.get(i));
         }
+        lastViewID = getViewID();
 
         tempG.drawImage(offscreenBuffer, 0, 0, null);
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 3117)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 3118)
@@ -91,5 +91,4 @@
     private boolean isChanged = true;
     private int highlightUpdateCount;
-    private int viewId;
 
     protected void setRequiresSaveToFile(boolean newValue) {
@@ -226,5 +225,4 @@
         isChanged = false;
         highlightUpdateCount = data.getHighlightUpdateCount();
-        viewId = Main.map.mapView.getViewID();
 
         boolean active = mv.getActiveLayer() == this;
@@ -726,5 +724,5 @@
     @Override
     public boolean isChanged() {
-        return isChanged || highlightUpdateCount != data.getHighlightUpdateCount() || viewId != Main.map.mapView.getViewID();
+        return isChanged || highlightUpdateCount != data.getHighlightUpdateCount();
     }
 
