Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 12339)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java	(revision 12340)
@@ -95,5 +95,5 @@
     volatile boolean thumbsLoaded;
     private BufferedImage offscreenBuffer;
-    boolean updateOffscreenBuffer = true;
+    private boolean updateOffscreenBuffer = true;
 
     private MouseAdapter mouseAdapter;
@@ -638,6 +638,5 @@
             ImageViewerDialog.showImage(this, null);
         }
-        updateOffscreenBuffer = true;
-        Main.map.repaint();
+        updateBufferAndRepaint();
     }
 
@@ -940,6 +939,6 @@
                     return;
                 if (isVisible() && isMapModeOk()) {
-                    Main.map.mapView.repaint();
                     cycleModeArmed = true;
+                    invalidate();
                 }
             }
@@ -1039,5 +1038,5 @@
     @Override
     public void zoomChanged() {
-        updateOffscreenBuffer = true;
+        updateBufferAndRepaint();
     }
 
@@ -1076,4 +1075,7 @@
     }
 
+    /**
+     * Marks the offscreen buffer to be updated.
+     */
     public void updateBufferAndRepaint() {
         updateOffscreenBuffer = true;
@@ -1129,4 +1131,5 @@
             stopLoadThumbs();
         }
+        invalidate();
     }
 }
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ShowThumbnailAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ShowThumbnailAction.java	(revision 12339)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ShowThumbnailAction.java	(revision 12340)
@@ -11,5 +11,4 @@
 import javax.swing.JCheckBoxMenuItem;
 
-import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
@@ -41,5 +40,4 @@
     public void actionPerformed(ActionEvent e) {
         layer.setUseThumbs(!layer.isUseThumbs());
-        Main.map.mapView.repaint();
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java	(revision 12339)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ThumbsLoader.java	(revision 12340)
@@ -82,6 +82,5 @@
 
                 if (layer != null && Main.isDisplayingMapView()) {
-                    layer.updateOffscreenBuffer = true;
-                    Main.map.mapView.repaint();
+                    layer.updateBufferAndRepaint();
                 }
             }
@@ -89,6 +88,5 @@
         if (layer != null) {
             layer.thumbsLoaded();
-            layer.updateOffscreenBuffer = true;
-            Main.map.mapView.repaint();
+            layer.updateBufferAndRepaint();
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 12339)
+++ trunk/src/org/openstreetmap/josm/gui/layer/markerlayer/MarkerLayer.java	(revision 12340)
@@ -490,5 +490,5 @@
         public void actionPerformed(ActionEvent e) {
             Main.pref.put("marker.show "+layer.getName(), layer.isTextOrIconShown() ? "hide" : "show");
-            Main.map.mapView.repaint();
+            layer.invalidate();
         }
 
