Index: trunk/src/org/openstreetmap/josm/Main.java
===================================================================
--- trunk/src/org/openstreetmap/josm/Main.java	(revision 1591)
+++ trunk/src/org/openstreetmap/josm/Main.java	(revision 1592)
@@ -87,4 +87,5 @@
      */
     public static DataSet pasteBuffer = new DataSet();
+    public static Layer pasteSource;
     /**
      * The projection method used.
@@ -348,5 +349,5 @@
                 new javax.swing.JLabel(tr("There are unsaved changes. Discard the changes and continue?")+msg),
                 new String[] {tr("Save and Exit"), tr("Discard and Exit"), tr("Cancel")},
-                new String[] {"save.png", "exit.png", "cancel.png"}).getValue(); 
+                new String[] {"save.png", "exit.png", "cancel.png"}).getValue();
 
                 // Save before exiting
Index: trunk/src/org/openstreetmap/josm/actions/CopyAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 1591)
+++ trunk/src/org/openstreetmap/josm/actions/CopyAction.java	(revision 1592)
@@ -48,4 +48,5 @@
 
         Main.pasteBuffer = copyData();
+        Main.pasteSource = Main.main.editLayer();
         Main.main.menu.paste.setEnabled(true); /* now we have a paste buffer we can make paste available */
 
Index: trunk/src/org/openstreetmap/josm/actions/PasteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 1591)
+++ trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 1592)
@@ -24,4 +24,5 @@
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.coor.EastNorth;
+import org.openstreetmap.josm.gui.layer.Layer;
 import org.openstreetmap.josm.tools.Shortcut;
 
@@ -35,8 +36,8 @@
 
     public void actionPerformed(ActionEvent e) {
-        pasteData(Main.pasteBuffer, e);
+        pasteData(Main.pasteBuffer, Main.pasteSource, e);
     }
-    
-    public static void pasteData(DataSet pasteBuffer, ActionEvent e) {
+
+    public static void pasteData(DataSet pasteBuffer, Layer source, ActionEvent e) {
         /* Find the middle of the pasteBuffer area */
         double maxEast = -1E100, minEast = 1E100, maxNorth = -1E100, minNorth = 1E100;
@@ -52,4 +53,5 @@
         EastNorth mPosition;
         if((e.getModifiers() & ActionEvent.CTRL_MASK) ==0){
+            /* adjust the coordinates to the middle of the visible map area */
             mPosition = Main.map.mapView.getCenter();
         } else {
@@ -67,7 +69,8 @@
             Node nnew = new Node(n);
             nnew.id = 0;
-            /* adjust the coordinates to the middle of the visible map area */
-            nnew.eastNorth = new EastNorth(nnew.eastNorth.east() + offsetEast, nnew.eastNorth.north() + offsetNorth);
-            nnew.coor = Main.proj.eastNorth2latlon(nnew.eastNorth);
+            if (Main.main.editLayer() == source) {
+                nnew.eastNorth = new EastNorth(nnew.eastNorth.east() + offsetEast, nnew.eastNorth.north() + offsetNorth);
+                nnew.coor = Main.proj.eastNorth2latlon(nnew.eastNorth);
+            }
             map.put(n, nnew);
         }
