Index: trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java	(revision 10681)
+++ trunk/src/org/openstreetmap/josm/actions/DuplicateAction.java	(revision 10682)
@@ -35,5 +35,6 @@
     public void actionPerformed(ActionEvent e) {
         PrimitiveTransferData data = PrimitiveTransferData.getDataWithReferences(getLayerManager().getEditDataSet().getSelected());
-        new OsmTransferHandler().pasteOn(Main.getLayerManager().getEditLayer(), data.getCenter(), new PrimitiveTransferable(data));
+        new OsmTransferHandler().pasteOn(Main.getLayerManager().getEditLayer(),
+                PasteAction.computePastePosition(e, getValue(NAME)), new PrimitiveTransferable(data));
     }
 
Index: trunk/src/org/openstreetmap/josm/actions/PasteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 10681)
+++ trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 10682)
@@ -43,4 +43,8 @@
     @Override
     public void actionPerformed(ActionEvent e) {
+        transferHandler.pasteOn(Main.getLayerManager().getEditLayer(), computePastePosition(e, getValue(NAME)));
+    }
+
+    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();
@@ -48,5 +52,5 @@
         // 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();
@@ -56,6 +60,5 @@
             }
         }
-
-        transferHandler.pasteOn(Main.getLayerManager().getEditLayer(), mPosition);
+        return mPosition;
     }
 
