Index: /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java	(revision 17827)
+++ /trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageDisplay.java	(revision 17828)
@@ -60,4 +60,7 @@
     /** The image currently displayed */
     private transient BufferedImage image;
+
+    /** The image currently displayed after applying {@link #imageProcessor} */
+    private transient BufferedImage processedImage;
 
     /**
@@ -380,4 +383,5 @@
 
                         ImageDisplay.this.image = img;
+                        updateProcessedImage();
                         // This will clear the loading info box
                         ImageDisplay.this.oldEntry = ImageDisplay.this.entry;
@@ -745,4 +749,5 @@
             if (entry == null) {
                 image = null;
+                updateProcessedImage();
                 this.oldEntry = null;
             }
@@ -778,5 +783,10 @@
     @Override
     public void filterChanged() {
+        updateProcessedImage();
         repaint();
+    }
+
+    private void updateProcessedImage() {
+        processedImage = image == null ? null : imageProcessor.process(image);
     }
 
@@ -790,5 +800,5 @@
 
         synchronized (this) {
-            image = this.image;
+            image = this.processedImage;
             entry = this.entry;
             oldEntry = this.oldEntry;
@@ -840,8 +850,4 @@
             }
 
-            if (image != null) {
-                image = imageProcessor.process(image);
-            }
-
             g.drawImage(image,
                     target.x, target.y, target.x + target.width, target.y + target.height,
