Index: trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 14866)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 14868)
@@ -69,6 +69,6 @@
                         bounds.getHeight() / 2);
             }
-            addToDownload(a, r1, results, maxArea);
-            addToDownload(a, r2, results, maxArea);
+            addToDownload(tmp, r1, results, maxArea);
+            addToDownload(tmp, r2, results, maxArea);
         } else {
             results.add(bounds);
Index: trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java	(revision 14866)
+++ trunk/src/org/openstreetmap/josm/gui/layer/gpx/DownloadAlongTrackAction.java	(revision 14868)
@@ -6,4 +6,5 @@
 import java.awt.event.ActionEvent;
 import java.awt.geom.Area;
+import java.awt.geom.Path2D;
 import java.awt.geom.Rectangle2D;
 
@@ -104,5 +105,5 @@
         class CalculateDownloadArea extends PleaseWaitRunnable {
 
-            private final Area a = new Area();
+            private final Path2D path = new Path2D.Double();
             private boolean cancel;
             private int ticks;
@@ -128,5 +129,5 @@
                     return;
                 }
-                confirmAndDownloadAreas(a, maxArea, panel.isDownloadOsmData(), panel.isDownloadGpxData(),
+                confirmAndDownloadAreas(new Area(path), maxArea, panel.isDownloadOsmData(), panel.isDownloadGpxData(),
                         tr("Download from OSM along this track"), progressMonitor);
             }
@@ -152,5 +153,5 @@
                     // we add a buffer around the point.
                     r.setRect(c.lon() - bufferX, c.lat() - bufferY, 2 * bufferX, 2 * bufferY);
-                    a.add(new Area(r));
+                    path.append(r, false);
                     return c;
                 }
