Index: trunk/src/org/openstreetmap/josm/actions/PasteAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 5051)
+++ trunk/src/org/openstreetmap/josm/actions/PasteAction.java	(revision 5052)
@@ -6,4 +6,6 @@
 import static org.openstreetmap.josm.tools.I18n.tr;
 
+import java.awt.MouseInfo;
+import java.awt.Point;
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
@@ -20,8 +22,8 @@
 import org.openstreetmap.josm.data.osm.PrimitiveData;
 import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy;
-import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy.PasteBufferChangedListener;
 import org.openstreetmap.josm.data.osm.RelationData;
 import org.openstreetmap.josm.data.osm.RelationMemberData;
 import org.openstreetmap.josm.data.osm.WayData;
+import org.openstreetmap.josm.data.osm.PrimitiveDeepCopy.PasteBufferChangedListener;
 import org.openstreetmap.josm.gui.ExtendedDialog;
 import org.openstreetmap.josm.gui.layer.Layer;
@@ -67,13 +69,12 @@
         }
 
-        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 {
-            if (Main.map.mapView.lastMEvent != null) {
-                mPosition = Main.map.mapView.getEastNorth(Main.map.mapView.lastMEvent.getX(), Main.map.mapView.lastMEvent.getY());
-            } else {
-                mPosition = Main.map.mapView.getCenter();
+        // default to paste in center of map (pasted via menu or cursor not in MapView)
+        EastNorth mPosition = Main.map.mapView.getCenter();
+        if((e.getModifiers() & ActionEvent.CTRL_MASK) != 0) {
+            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);
+            if(Main.map.mapView.contains(pos)) {
+                mPosition = Main.map.mapView.getEastNorth(pos.x, pos.y);
             }
         }
