Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java	(revision 3962)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPaintVisitor.java	(revision 3964)
@@ -104,5 +104,5 @@
 
         circum = nc.getDist100Pixel();
-        boolean drawArea = circum <= Main.pref.getInteger("mappaint.fillareas", 10000000) && !paintSettings.isOutlineOnly();
+        boolean drawArea = circum <= Main.pref.getInteger("mappaint.fillareas", 10000000);
         boolean drawMultipolygon = drawArea && Main.pref.getBoolean("mappaint.multipolygon", true);
         styles.setDrawMultipolygon(drawMultipolygon);
Index: trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3962)
+++ trunk/src/org/openstreetmap/josm/data/osm/visitor/paint/MapPainter.java	(revision 3964)
@@ -56,4 +56,6 @@
     private final boolean showIcons;
 
+    private final boolean  isOutlineOnly;
+
     private final Color inactiveColor;
     private final Color selectedColor;
@@ -87,4 +89,6 @@
         this.showNames = settings.getShowNamesDistance() > circum;
         this.showIcons = settings.getShowIconsDistance() > circum;
+
+        this.isOutlineOnly = settings.isOutlineOnly();
 
         this.inactiveColor = PaintColors.INACTIVE.get();
@@ -498,16 +502,18 @@
     protected void drawArea(OsmPrimitive osm, Polygon polygon, Color color, BufferedImage fillImage, float fillImageAlpha, TextElement text) {
 
-        if (fillImage == null) {
-            g.setColor(color);
-            g.fillPolygon(polygon);
-        } else {
-            TexturePaint texture = new TexturePaint(fillImage, 
-                    new Rectangle(polygon.xpoints[0], polygon.ypoints[0], fillImage.getWidth(), fillImage.getHeight()));
-            g.setPaint(texture);
-            if (fillImageAlpha != 1f) {
-                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, fillImageAlpha));
-            }
-            g.fill(polygon);
-            g.setPaintMode();
+        if (!isOutlineOnly) {
+            if (fillImage == null) {
+                g.setColor(color);
+                g.fillPolygon(polygon);
+            } else {
+                TexturePaint texture = new TexturePaint(fillImage,
+                        new Rectangle(polygon.xpoints[0], polygon.ypoints[0], fillImage.getWidth(), fillImage.getHeight()));
+                g.setPaint(texture);
+                if (fillImageAlpha != 1f) {
+                    g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, fillImageAlpha));
+                }
+                g.fill(polygon);
+                g.setPaintMode();
+            }
         }
 
