Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 9508)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadGpsTask.java	(revision 9509)
@@ -129,6 +129,4 @@
         protected void finish() {
             rememberDownloadedData(rawData);
-            if (isCanceled() || isFailed())
-                return;
             if (rawData == null)
                 return;
Index: trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java
===================================================================
--- trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java	(revision 9508)
+++ trunk/src/org/openstreetmap/josm/io/BoundingBoxDownloader.java	(revision 9509)
@@ -6,6 +6,8 @@
 import java.io.IOException;
 import java.io.InputStream;
+import java.net.SocketException;
 import java.util.List;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.Bounds;
 import org.openstreetmap.josm.data.DataSource;
@@ -49,5 +51,5 @@
         GpxData result = null;
         String url = "trackpoints?bbox="+b.getMinLon()+','+b.getMinLat()+','+b.getMaxLon()+','+b.getMaxLat()+"&page=";
-        for (int i = 0; !done; ++i) {
+        for (int i = 0; !done && !isCanceled(); ++i) {
             progressMonitor.subTask(tr("Downloading points {0} to {1}...", i * 5000, (i + 1) * 5000));
             try (InputStream in = getInputStream(url+i, progressMonitor.createSubTaskMonitor(1, true))) {
@@ -65,4 +67,10 @@
                 } else {
                     done = true;
+                }
+            } catch (OsmTransferException | SocketException ex) {
+                if (isCanceled()) {
+                    final OsmTransferCanceledException canceledException = new OsmTransferCanceledException("Operation canceled");
+                    canceledException.initCause(ex);
+                    Main.warn(canceledException);
                 }
             }
@@ -209,7 +217,5 @@
             }
             return notes;
-        } catch (IOException e) {
-            throw new OsmTransferException(e);
-        } catch (SAXException e) {
+        } catch (IOException | SAXException e) {
             throw new OsmTransferException(e);
         } finally {
