Index: src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java
===================================================================
--- src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(revision 15345)
+++ src/org/openstreetmap/josm/actions/downloadtasks/DownloadOsmTask.java	(working copy)
@@ -467,9 +467,11 @@
                 if (remark != null && !remark.isEmpty()) {
                     rememberErrorMessage(remark);
                 }
-                // need to synthesize a download bounds lest the visual indication of downloaded area doesn't work
-                dataSet.addDataSource(new DataSource(currentBounds != null ? currentBounds :
-                    new Bounds(LatLon.ZERO), "OpenStreetMap server"));
+                if (!(reader instanceof OverpassDownloadReader)) {
+                    // need to synthesize a download bounds lest the visual indication of downloaded area doesn't work
+                    dataSet.addDataSource(new DataSource(currentBounds != null ? currentBounds :
+                        new Bounds(LatLon.ZERO), "OpenStreetMap server"));
+                }
             }
 
             rememberDownloadedData(dataSet);
Index: src/org/openstreetmap/josm/io/OverpassDownloadReader.java
===================================================================
--- src/org/openstreetmap/josm/io/OverpassDownloadReader.java	(revision 15345)
+++ src/org/openstreetmap/josm/io/OverpassDownloadReader.java	(working copy)
@@ -30,6 +30,7 @@
 import org.openstreetmap.josm.data.coor.LatLon;
 import org.openstreetmap.josm.data.osm.BBox;
 import org.openstreetmap.josm.data.osm.DataSet;
+import org.openstreetmap.josm.data.osm.DataSetMerger;
 import org.openstreetmap.josm.data.osm.OsmPrimitiveType;
 import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.data.preferences.BooleanProperty;
@@ -384,25 +385,31 @@
     public DataSet parseOsm(ProgressMonitor progressMonitor) throws OsmTransferException {
 
         DataSet ds = super.parseOsm(progressMonitor);
+        boolean ignoreBounds = !overpassQuery.contains("node({{bbox}})"); // quick & dirty solution
+        if (ignoreBounds) {
+            DataSet noBounds = new DataSet();
+            DataSetMerger dsm = new DataSetMerger(noBounds, ds);
+            dsm.merge(null, false);
+            return dsm.getTargetDataSet();
+        } else {
+            // add bounds if necessary (note that Overpass API does not return bounds in the response XML)
+            if (ds != null && ds.getDataSources().isEmpty() && overpassQuery.contains("{{bbox}}")) {
+                if (crosses180th) {
+                    Bounds bounds = new Bounds(lat1, lon1, lat2, 180.0);
+                    DataSource src = new DataSource(bounds, getBaseUrl());
+                    ds.addDataSource(src);
 
-        // add bounds if necessary (note that Overpass API does not return bounds in the response XML)
-        if (ds != null && ds.getDataSources().isEmpty() && overpassQuery.contains("{{bbox}}")) {
-            if (crosses180th) {
-                Bounds bounds = new Bounds(lat1, lon1, lat2, 180.0);
-                DataSource src = new DataSource(bounds, getBaseUrl());
-                ds.addDataSource(src);
-
-                bounds = new Bounds(lat1, -180.0, lat2, lon2);
-                src = new DataSource(bounds, getBaseUrl());
-                ds.addDataSource(src);
-            } else {
-                Bounds bounds = new Bounds(lat1, lon1, lat2, lon2);
-                DataSource src = new DataSource(bounds, getBaseUrl());
-                ds.addDataSource(src);
+                    bounds = new Bounds(lat1, -180.0, lat2, lon2);
+                    src = new DataSource(bounds, getBaseUrl());
+                    ds.addDataSource(src);
+                } else {
+                    Bounds bounds = new Bounds(lat1, lon1, lat2, lon2);
+                    DataSource src = new DataSource(bounds, getBaseUrl());
+                    ds.addDataSource(src);
+                }
             }
+            return ds;
         }
-
-        return ds;
     }
 
     /**
