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<>();
@@ -82,6 +83,7 @@
     private final HashSet<HistoryOsmPrimitive> deleted = new HashSet<>();
     private final HashMap<PrimitiveId, Integer> earliestVersions = new HashMap<>();
 
+
     //// Handling missing objects
     ////////////////////////////////////////
     private void addIfMissing(PrimitiveId id) {
@@ -117,7 +119,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 +143,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);
