Index: trunk/src/org/openstreetmap/josm/actions/HatchAreaOutsideDownloadAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/HatchAreaOutsideDownloadAction.java	(revision 6499)
+++ trunk/src/org/openstreetmap/josm/actions/HatchAreaOutsideDownloadAction.java	(revision 6499)
@@ -0,0 +1,44 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.actions;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+
+import java.awt.event.ActionEvent;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+/**
+ * This class toggles hatched background rendering of areas outside of the downloaded areas.
+ */
+public class HatchAreaOutsideDownloadAction extends PreferenceToggleAction {
+
+    private static final BooleanProperty PROP = new BooleanProperty("mappaint.hatch-outside-download-area", true);
+
+    /**
+     * Constructs a new {@link HatchAreaOutsideDownloadAction}.
+     */
+    public HatchAreaOutsideDownloadAction() {
+        super(tr("Hatch area outside download"),
+                tr("Enable/disable hatched background rendering of areas outside of the downloaded areas."),
+                PROP
+        );
+    }
+
+    @Override
+    protected void updateEnabledState() {
+        setEnabled(Main.main.hasEditLayer());
+    }
+
+    @Override
+    public void actionPerformed(ActionEvent e) {
+        super.actionPerformed(e);
+        if (Main.isDisplayingMapView()) {
+            Main.map.mapView.repaint();
+        }
+    }
+
+    public static boolean isHatchEnabled() {
+        return PROP.get();
+    }
+}
Index: trunk/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java	(revision 6497)
+++ trunk/src/org/openstreetmap/josm/actions/PreferenceToggleAction.java	(revision 6499)
@@ -7,18 +7,23 @@
 import org.openstreetmap.josm.data.Preferences;
 import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.tools.CheckParameterUtil;
 
 public class PreferenceToggleAction extends JosmAction implements PreferenceChangedListener {
 
-    private final JCheckBoxMenuItem checkbox;
-    private final String prefKey;
-    private final boolean prefDefault;
+    protected final JCheckBoxMenuItem checkbox;
+    protected final BooleanProperty property;
 
     public PreferenceToggleAction(String name, String tooltip, String prefKey, boolean prefDefault) {
+        this(name, tooltip, new BooleanProperty(prefKey, prefDefault));
+    }
+
+    public PreferenceToggleAction(String name, String tooltip, BooleanProperty property) {
         super(name, null, tooltip, null, false);
-        putValue("toolbar", "toggle-" + prefKey);
-        this.prefKey = prefKey;
-        this.prefDefault = prefDefault;
+        CheckParameterUtil.ensureParameterNotNull(property, "property");
+        putValue("toolbar", "toggle-" + property.getKey());
+        this.property = property;
         this.checkbox = new JCheckBoxMenuItem(this);
-        this.checkbox.setSelected(Main.pref.getBoolean(prefKey, prefDefault));
+        this.checkbox.setSelected(property.get());
         Main.pref.addPreferenceChangeListener(this);
     }
@@ -26,5 +31,5 @@
     @Override
     public void actionPerformed(ActionEvent e) {
-        Main.pref.put(prefKey, checkbox.isSelected());
+        property.put(checkbox.isSelected());
     }
 
@@ -35,6 +40,6 @@
     @Override
     public void preferenceChanged(Preferences.PreferenceChangeEvent e) {
-        if (prefKey.equals(e.getKey())) {
-            checkbox.setSelected(Main.pref.getBoolean(prefKey, prefDefault));
+        if (property.getKey().equals(e.getKey())) {
+            checkbox.setSelected(property.get());
         }
     }
Index: trunk/src/org/openstreetmap/josm/gui/MainMenu.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 6497)
+++ trunk/src/org/openstreetmap/josm/gui/MainMenu.java	(revision 6499)
@@ -47,4 +47,5 @@
 import org.openstreetmap.josm.actions.FullscreenToggleAction;
 import org.openstreetmap.josm.actions.GpxExportAction;
+import org.openstreetmap.josm.actions.HatchAreaOutsideDownloadAction;
 import org.openstreetmap.josm.actions.HelpAction;
 import org.openstreetmap.josm.actions.HistoryInfoAction;
@@ -199,4 +200,5 @@
     /** View -> Wireframe View */
     public final WireframeToggleAction wireFrameToggleAction = new WireframeToggleAction();
+    public final HatchAreaOutsideDownloadAction hatchAreaOutsideDownloadAction = new HatchAreaOutsideDownloadAction();
     public final JosmAction toggleGPXLines = new ToggleGPXLinesAction();
     /** View -> Advanced info */
@@ -643,4 +645,7 @@
         wireframe.setAccelerator(wireFrameToggleAction.getShortcut().getKeyStroke());
         wireFrameToggleAction.addButtonModel(wireframe.getModel());
+        final JCheckBoxMenuItem hatchAreaOutsideDownloadMenuItem = hatchAreaOutsideDownloadAction.getCheckbox();
+        viewMenu.add(hatchAreaOutsideDownloadMenuItem);
+        ExpertToggleAction.addVisibilitySwitcher(hatchAreaOutsideDownloadMenuItem);
 
         viewMenu.add(new MapPaintMenu());
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 6497)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 6499)
@@ -41,4 +41,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.actions.ExpertToggleAction;
+import org.openstreetmap.josm.actions.HatchAreaOutsideDownloadAction;
 import org.openstreetmap.josm.actions.RenameLayerAction;
 import org.openstreetmap.josm.actions.SaveActionBase;
@@ -317,6 +318,8 @@
 
             // paint remainder
-            g.setPaint(hatched);
-            g.fill(a);
+            if (HatchAreaOutsideDownloadAction.isHatchEnabled()) {
+                g.setPaint(hatched);
+                g.fill(a);
+            }
         }
 
