Index: applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/EdgeSelectionAction.java
===================================================================
--- applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/EdgeSelectionAction.java	(revision 33454)
+++ applications/editors/josm/plugins/pt_assistant/src/org/openstreetmap/josm/plugins/pt_assistant/actions/EdgeSelectionAction.java	(revision 33455)
@@ -11,4 +11,5 @@
 import java.util.List;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.openstreetmap.josm.Main;
@@ -16,5 +17,7 @@
 import org.openstreetmap.josm.data.osm.DataSet;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.RelationMember;
 import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.gui.dialogs.relation.sort.RelationSorter;
 import org.openstreetmap.josm.plugins.pt_assistant.utils.RouteUtils;
 import org.openstreetmap.josm.tools.ImageProvider;
@@ -30,5 +33,5 @@
 public class EdgeSelectionAction extends MapMode {
 
-    private static final String mapModeName = "Edge Selection";
+    private static final String MAP_MODE_NAME = "Edge Selection";
     private static final long serialVersionUID = 2414977774504904238L;
 
@@ -39,7 +42,7 @@
 
     public EdgeSelectionAction() {
-        super(tr(mapModeName), "edgeSelection", tr(mapModeName),
+        super(tr(MAP_MODE_NAME), "edgeSelection", tr(MAP_MODE_NAME),
                 Shortcut.registerShortcut("mapmode:edge_selection",
-                        tr("Mode: {0}", tr(mapModeName)),
+                        tr("Mode: {0}", tr(MAP_MODE_NAME)),
                         KeyEvent.VK_K, Shortcut.CTRL),
                 ImageProvider.getCursor("normal", "selection"));
@@ -80,5 +83,17 @@
 
         edge.add(initial);
+        edge = sortEdgeWays(edge);
         return edge;
+    }
+
+    private List<Way> sortEdgeWays(List<Way> edge) {
+        List<RelationMember> members =
+                edge.stream()
+                    .map(w -> new RelationMember("", w))
+                    .collect(Collectors.toList());
+        List<RelationMember> sorted = new RelationSorter().sortMembers(members);
+        return sorted.stream()
+                .map(RelationMember::getWay)
+                .collect(Collectors.toList());
     }
 
