Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 1081)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 1082)
@@ -11,9 +11,13 @@
 import org.openstreetmap.josm.actions.DownloadAction;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DataSource;
 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
 import org.openstreetmap.josm.gui.download.DownloadDialog.DownloadTask;
 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.io.BoundingBoxDownloader;
+import org.openstreetmap.josm.data.Bounds;
+import org.openstreetmap.josm.data.coor.LatLon;
 import org.xml.sax.SAXException;
+
 
 /**
@@ -22,4 +26,6 @@
  */
 public class DownloadOsmTask implements DownloadTask {
+
+    private static Bounds currentBounds;
 
 	private static class Task extends PleaseWaitRunnable {
@@ -41,6 +47,11 @@
 			if (dataSet == null)
 				return; // user cancelled download or error occoured
-			if (dataSet.allPrimitives().isEmpty())
+			if (dataSet.allPrimitives().isEmpty()) {
 				errorMessage = tr("No data imported.");
+                // need to synthesize a download bounds lest the visual indication of downloaded
+                // area doesn't work
+                dataSet.dataSources.add(new DataSource(currentBounds, "OpenStreetMap server"));
+            }
+
 			OsmDataLayer layer = new OsmDataLayer(dataSet, tr("Data Layer"), null);
 			if (newLayer)
@@ -69,4 +80,5 @@
     
 		Task task = new Task(action != null && (action.dialog == null || action.dialog.newLayer.isSelected()), new BoundingBoxDownloader(minlat, minlon, maxlat, maxlon));
+        currentBounds = new Bounds(new LatLon(minlat, minlon), new LatLon(maxlat, maxlon));
 		Main.worker.execute(task);
     }
Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 1081)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 1082)
@@ -178,6 +178,5 @@
 	}
 
-	synchronized public Map<String, String> getDefaults()
-	{
+	synchronized public Map<String, String> getDefaults() {
 		return defaults;
 	}
Index: trunk/src/org/openstreetmap/josm/gui/MainApplication.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 1081)
+++ trunk/src/org/openstreetmap/josm/gui/MainApplication.java	(revision 1082)
@@ -165,5 +165,7 @@
 			Main.pref.save();
 		}
-		
+
+        // TODO remove this in early 2009 - just here to weed out color setting we don't use any more
+        Main.pref.put("downloaded Area", null);
 
 		String localeName = null; //The locale to use
Index: trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 1081)
+++ trunk/src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java	(revision 1082)
@@ -7,6 +7,8 @@
 import static org.openstreetmap.josm.tools.I18n.trn;
 
+import java.awt.AlphaComposite;
 import java.awt.Color;
 import java.awt.Component;
+import java.awt.Composite;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
@@ -128,6 +130,26 @@
      * a paint texture for non-downloaded area
      */
-    private TexturePaint hatched;
+    private static TexturePaint hatched;
     
+    static {
+        createHatchTexture();
+    }
+
+    /**
+     * Initialize the hatch pattern used to paint the non-downloaded area
+     */
+    public static void createHatchTexture() {
+        BufferedImage bi = new BufferedImage(15, 15, BufferedImage.TYPE_INT_ARGB);
+        Graphics2D big = bi.createGraphics();
+        big.setColor(Main.pref.getColor(marktr("background"), Color.BLACK));
+        Composite comp = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f);
+        big.setComposite(comp);
+        big.fillRect(0,0,15,15);
+        big.setColor(Main.pref.getColor(marktr("outside downloaded area"), Color.YELLOW));
+        big.drawLine(0,15,15,0);
+        Rectangle r = new Rectangle(0, 0, 15,15);
+        hatched = new TexturePaint(bi, r);
+    }
+
     /**
      * Construct a OsmDataLayer.
@@ -137,13 +159,4 @@
         this.data = data;
         this.associatedFile = associatedFile;
-        
-        BufferedImage bi = new BufferedImage(15, 15, BufferedImage.TYPE_INT_RGB);
-        Graphics2D big = bi.createGraphics();
-        big.setColor(Main.pref.getColor(marktr("background"), Color.BLACK));
-        big.fillRect(0,0,15,15);
-        big.setColor(Main.pref.getColor(marktr("downloaded Area"), Color.YELLOW));
-        big.drawLine(0,15,15,0);
-        Rectangle r = new Rectangle(0, 0, 15,15);
-        hatched = new TexturePaint(bi, r);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java	(revision 1081)
+++ trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java	(revision 1082)
@@ -30,4 +30,5 @@
 import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.visitor.SimplePaintVisitor;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
 import org.openstreetmap.josm.tools.ColorHelper;
 import org.openstreetmap.josm.tools.GBC;
@@ -172,4 +173,5 @@
 			Main.pref.put("color." + name, ColorHelper.color2html(col));
 		}
+        org.openstreetmap.josm.gui.layer.OsmDataLayer.createHatchTexture();
     }
 }
