diff --git a/src/org/openstreetmap/josm/actions/DuplicateAction.java b/src/org/openstreetmap/josm/actions/DuplicateAction.java
index c297076..d26003e 100644
--- a/src/org/openstreetmap/josm/actions/DuplicateAction.java
+++ b/src/org/openstreetmap/josm/actions/DuplicateAction.java
@@ -10,6 +10,7 @@ import java.awt.event.KeyEvent;
 import java.util.Collection;
 
 import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.coor.EastNorth;
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.gui.datatransfer.OsmTransferHandler;
 import org.openstreetmap.josm.gui.datatransfer.PrimitiveTransferable;
@@ -34,7 +35,8 @@ public final class DuplicateAction extends JosmAction {
     @Override
     public void actionPerformed(ActionEvent e) {
         PrimitiveTransferData data = PrimitiveTransferData.getDataWithReferences(getLayerManager().getEditDataSet().getSelected());
-        new OsmTransferHandler().pasteOn(Main.getLayerManager().getEditLayer(), data.getCenter(), new PrimitiveTransferable(data));
+        EastNorth mPosition = PasteAction.computePastePosition(e, getValue(NAME));
+        new OsmTransferHandler().pasteOn(Main.getLayerManager().getEditLayer(), mPosition, new PrimitiveTransferable(data));
     }
 
     @Override
diff --git a/src/org/openstreetmap/josm/actions/PasteAction.java b/src/org/openstreetmap/josm/actions/PasteAction.java
index 19f076b..a81bc0a 100644
--- a/src/org/openstreetmap/josm/actions/PasteAction.java
+++ b/src/org/openstreetmap/josm/actions/PasteAction.java
@@ -42,12 +42,18 @@ public final class PasteAction extends JosmAction implements FlavorListener {
 
     @Override
     public void actionPerformed(ActionEvent e) {
+        EastNorth mPosition = computePastePosition(e, getValue(NAME));
+
+        transferHandler.pasteOn(Main.getLayerManager().getEditLayer(), mPosition);
+    }
+
+    static EastNorth computePastePosition(ActionEvent e, Object name) {
         // default to paste in center of map (pasted via menu or cursor not in MapView)
         EastNorth mPosition = Main.map.mapView.getCenter();
         // We previously checked for modifier to know if the action has been trigerred via shortcut or via menu
         // But this does not work if the shortcut is changed to a single key (see #9055)
         // Observed behaviour: getActionCommand() returns Action.NAME when triggered via menu, but shortcut text when triggered with it
-        if (e != null && !getValue(NAME).equals(e.getActionCommand())) {
+        if (e != null && !name.equals(e.getActionCommand())) {
             final Point mp = MouseInfo.getPointerInfo().getLocation();
             final Point tl = Main.map.mapView.getLocationOnScreen();
             final Point pos = new Point(mp.x-tl.x, mp.y-tl.y);
@@ -55,8 +61,7 @@ public final class PasteAction extends JosmAction implements FlavorListener {
                 mPosition = Main.map.mapView.getEastNorth(pos.x, pos.y);
             }
         }
-
-        transferHandler.pasteOn(Main.getLayerManager().getEditLayer(), mPosition);
+        return mPosition;
     }
 
     @Override
