Index: src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java
===================================================================
--- src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java	(revision 17314)
+++ src/org/openstreetmap/josm/actions/relation/DownloadMembersAction.java	(working copy)
@@ -6,14 +6,14 @@
 
 import java.awt.event.ActionEvent;
 import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.data.osm.IPrimitive;
-import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.PrimitiveId;
 import org.openstreetmap.josm.gui.MainApplication;
-import org.openstreetmap.josm.gui.dialogs.relation.DownloadRelationTask;
+import org.openstreetmap.josm.gui.io.DownloadPrimitivesTask;
 import org.openstreetmap.josm.tools.ImageProvider;
-import org.openstreetmap.josm.tools.SubclassFilteredCollection;
-import org.openstreetmap.josm.tools.Utils;
 
 /**
  * The action for downloading members of relations
@@ -34,14 +34,17 @@
     @Override
     public void actionPerformed(ActionEvent e) {
         if (!isEnabled() || relations.isEmpty() || !MainApplication.isDisplayingMapView()) return;
-        MainApplication.worker.submit(new DownloadRelationTask(
-                Utils.filteredCollection(relations, Relation.class), MainApplication.getLayerManager().getEditLayer()));
+        List<PrimitiveId> members = relations.stream()
+                .flatMap(r -> r.getMemberPrimitivesList().stream().filter(osm -> !osm.isNew()).map(IPrimitive::getOsmPrimitiveId))
+                .distinct()
+                .collect(Collectors.toList());
+
+        MainApplication.worker.submit(new DownloadPrimitivesTask(MainApplication.getLayerManager().getEditLayer(), members, false));
     }
 
     @Override
     public void setPrimitives(Collection<? extends IPrimitive> primitives) {
-        // selected non-new relations
-        this.relations = SubclassFilteredCollection.filter(getRelations(primitives), r -> !r.isNew());
+        this.relations = getRelations(primitives);
         updateEnabledState();
     }
 
