Index: src/reverter/ChangesetReverter.java
===================================================================
--- src/reverter/ChangesetReverter.java	(revision 35307)
+++ src/reverter/ChangesetReverter.java	(working copy)
@@ -73,6 +73,7 @@
     private final OsmDataLayer layer; // data layer associated with reverter
     private final DataSet ds; // DataSet associated with reverter
     private final ChangesetDataSet cds; // Current changeset data
+    private final DataSet ods; // original DataSet, used if a new layer is requested
     private DataSet nds; // Dataset that contains new objects downloaded by reverter
 
     private final HashSet<PrimitiveId> missing = new HashSet<>();
@@ -117,7 +118,7 @@
                 entry.getModificationType() == ChangesetModificationType.DELETED) {
             return true;
         }
-        OsmPrimitive p = ds.getPrimitiveById(entry.getPrimitive().getPrimitiveId());
+        OsmPrimitive p = ods.getPrimitiveById(entry.getPrimitive().getPrimitiveId());
         if (p == null) return false;
         return p.isSelected();
     }
@@ -141,6 +142,10 @@
             this.layer = MainApplication.getLayerManager().getEditLayer();
             this.ds = layer.data;
         }
+        if (revertType == RevertType.SELECTION || revertType == RevertType.SELECTION_WITH_UNDELETE)
+        	this.ods = MainApplication.getLayerManager().getEditLayer().data;
+        else
+        	this.ods = this.ds;
         this.revertType = revertType;
 
         OsmServerChangesetReader csr = new OsmServerChangesetReader(true);
