Index: trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 737)
+++ trunk/src/org/openstreetmap/josm/actions/AutoScaleAction.java	(revision 746)
@@ -84,10 +84,11 @@
 			for (OsmPrimitive osm : sel)
 				osm.visit(v);
-			// special case to zoom nicely to one single node
-			if (v.min != null && v.max != null && v.min.north() == v.max.north() && v.min.east() == v.max.east()) {
-				EastNorth en = Main.proj.latlon2eastNorth(new LatLon(0.001, 0.001));
-				v.min = new EastNorth(v.min.east()-en.east(), v.min.north()-en.north());
-				v.max = new EastNorth(v.max.east()+en.east(), v.max.north()+en.north());
-			}
+			// increase bbox by 0.001 degrees on each side. this is required 
+			// especially if the bbox contains one single node, but helpful 
+			// in most other cases as well.
+			// if (v.min != null && v.max != null && v.min.north() == v.max.north() && v.min.east() == v.max.east()) {
+			EastNorth en = Main.proj.latlon2eastNorth(new LatLon(0.001, 0.001));
+			v.min = new EastNorth(v.min.east()-en.east(), v.min.north()-en.north());
+			v.max = new EastNorth(v.max.east()+en.east(), v.max.north()+en.north());
 		}
 		return v;
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 737)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 746)
@@ -58,14 +58,15 @@
 
 	public void download(DownloadAction action, double minlat, double minlon, double maxlat, double maxlon) {
-    // Swap min and max if user has specified them the wrong way round
-    // (easy to do if you are crossing 0, for example)
-    if (minlat > maxlat) {
-      double t = minlat; minlat = maxlat; maxlat = t;
-    }
-    if (minlon > maxlon) {
-      double t = minlon; minlon = maxlon; maxlon = t;
-    }
+		// Swap min and max if user has specified them the wrong way round
+		// (easy to do if you are crossing 0, for example)
+		// FIXME should perhaps be done in download dialog?
+		if (minlat > maxlat) {
+			double t = minlat; minlat = maxlat; maxlat = t;
+		}
+		if (minlon > maxlon) {
+			double t = minlon; minlon = maxlon; maxlon = t;
+		}
     
-		Task task = new Task(action.dialog == null || action.dialog.newLayer.isSelected(), new BoundingBoxDownloader(minlat, minlon, maxlat, maxlon));
+		Task task = new Task(action != null && (action.dialog == null || action.dialog.newLayer.isSelected()), new BoundingBoxDownloader(minlat, minlon, maxlat, maxlon));
 		Main.worker.execute(task);
     }
