Index: trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 15204)
+++ trunk/src/org/openstreetmap/josm/actions/DownloadAlongAction.java	(revision 15205)
@@ -27,4 +27,5 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 import org.openstreetmap.josm.gui.progress.swing.PleaseWaitProgressMonitor;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.GBC;
 import org.openstreetmap.josm.tools.Logging;
@@ -128,5 +129,6 @@
         }
         final PleaseWaitProgressMonitor monitor = new PleaseWaitProgressMonitor(tr("Download data"));
-        final Future<?> future = new DownloadTaskList().download(false, toDownload, osmDownload, gpxDownload, monitor);
+        final Future<?> future = new DownloadTaskList(Config.getPref().getBoolean("download.along.zoom-after-download"))
+                .download(false, toDownload, osmDownload, gpxDownload, monitor);
         waitFuture(future, monitor);
     }
Index: trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java	(revision 15204)
+++ trunk/src/org/openstreetmap/josm/actions/UpdateDataAction.java	(revision 15205)
@@ -18,4 +18,5 @@
 import org.openstreetmap.josm.io.NetworkManager;
 import org.openstreetmap.josm.io.OnlineResource;
+import org.openstreetmap.josm.spi.preferences.Config;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -91,5 +92,6 @@
             // bounds defined? => use the bbox downloader
             final PleaseWaitProgressMonitor monitor = new PleaseWaitProgressMonitor(tr("Download data"));
-            final Future<?> future = new DownloadTaskList().download(false /* no new layer */, areasToDownload, true, false, monitor);
+            final Future<?> future = new DownloadTaskList(Config.getPref().getBoolean("update.data.zoom-after-download"))
+                    .download(false /* no new layer */, areasToDownload, true, false, monitor);
             waitFuture(future, monitor);
         }
Index: trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 15204)
+++ trunk/src/org/openstreetmap/josm/actions/downloadtasks/DownloadTaskList.java	(revision 15205)
@@ -50,9 +50,27 @@
     private final List<DownloadTask> tasks = new LinkedList<>();
     private final List<Future<?>> taskFutures = new LinkedList<>();
+    private final boolean zoomAfterDownload;
     private ProgressMonitor progressMonitor;
+
+    /**
+     * Constructs a new {@code DownloadTaskList}. Zooms to each download area.
+     */
+    public DownloadTaskList() {
+        this(true);
+    }
+
+    /**
+     * Constructs a new {@code DownloadTaskList}.
+     * @param zoomAfterDownload whether to zoom to each download area
+     * @since 15205
+     */
+    public DownloadTaskList(boolean zoomAfterDownload) {
+        this.zoomAfterDownload = zoomAfterDownload;
+    }
 
     private void addDownloadTask(ProgressMonitor progressMonitor, DownloadTask dt, Rectangle2D td, int i, int n) {
         ProgressMonitor childProgress = progressMonitor.createSubTaskMonitor(1, false);
         childProgress.setCustomText(tr("Download {0} of {1} ({2} left)", i, n, n - i));
+        dt.setZoomAfterDownload(zoomAfterDownload);
         Future<?> future = dt.download(new DownloadParams(), new Bounds(td), childProgress);
         taskFutures.add(future);
@@ -109,9 +127,5 @@
         progressMonitor.beginTask(tr("Updating data"));
         try {
-            List<Rectangle2D> rects = new ArrayList<>(areas.size());
-            for (Area a : areas) {
-                rects.add(a.getBounds2D());
-            }
-
+            List<Rectangle2D> rects = areas.stream().map(Area::getBounds2D).collect(Collectors.toList());
             return download(newLayer, rects, osmData, gpxData, progressMonitor.createSubTaskMonitor(ProgressMonitor.ALL_TICKS, false));
         } finally {
