diff --git a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/Clipboard.java b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/Clipboard.java
index ebb31cd..0c390b4 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/Clipboard.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT Drag and Drop/win32/org/eclipse/swt/dnd/Clipboard.java
@@ -27,6 +27,7 @@
 	private final int MAX_RETRIES = 10;
 	private Transfer[] transferAgents = new Transfer[0];
 	private Object[] data = new Object[0];
+	private int CFSTR_PREFERREDDROPEFFECT;
 
 /**
  * Constructs a new instance of this class.  Creating an instance of a Clipboard
@@ -55,6 +56,8 @@
 		SWT.error(SWT.ERROR_THREAD_INVALID_ACCESS);
 	}
 	
+	TCHAR chFormatName = new TCHAR(0, "Preferred DropEffect", true);
+	CFSTR_PREFERREDDROPEFFECT = COM.RegisterClipboardFormat(chFormatName);
 	createCOMInterfaces();
 	this.AddRef();
 }
@@ -267,10 +270,18 @@
 	OleEnumFORMATETC enumFORMATETC = new OleEnumFORMATETC();
 	enumFORMATETC.AddRef();
 	
-	FORMATETC[] formats = new FORMATETC[allowedDataTypes.length];
-	for (int i = 0; i < formats.length; i++){
+	FORMATETC[] formats = new FORMATETC[allowedDataTypes.length + 1];
+	for (int i = 0; i < allowedDataTypes.length; i++){
 		formats[i] = allowedDataTypes[i].formatetc;
 	}
+	// include the drop effect format to specify a copy operation
+	FORMATETC dropeffect = new FORMATETC();
+	dropeffect.cfFormat = CFSTR_PREFERREDDROPEFFECT;
+	dropeffect.dwAspect = COM.DVASPECT_CONTENT;
+	dropeffect.lindex = -1;
+	dropeffect.tymed = COM.TYMED_HGLOBAL;
+	formats[formats.length -1] = dropeffect;
+	
 	enumFORMATETC.setFormats(formats);
 	
 	COM.MoveMemory(ppenumFormatetc, new int[] {enumFORMATETC.getAddress()}, 4);
@@ -292,6 +303,17 @@
 	transferData.type = transferData.formatetc.cfFormat;
 	transferData.stgmedium = new STGMEDIUM();
 	transferData.result = COM.E_FAIL;
+
+	if (transferData.type == CFSTR_PREFERREDDROPEFFECT) {
+		// specify that a copy operation is to be performed
+		STGMEDIUM stgmedium = new STGMEDIUM();
+		stgmedium.tymed = COM.TYMED_HGLOBAL;
+		stgmedium.unionField = COM.GlobalAlloc(COM.GMEM_FIXED | COM.GMEM_ZEROINIT, 4);
+		COM.MoveMemory(stgmedium.unionField, new int[] {COM.DROPEFFECT_COPY}, 4);
+		stgmedium.pUnkForRelease = 0;
+		COM.MoveMemory(pmedium, stgmedium, STGMEDIUM.sizeof);
+		return COM.S_OK;
+	}
 		
 	// get matching transfer agent to perform conversion
 	int transferIndex = -1;
@@ -316,6 +338,8 @@
 	COM.MoveMemory(transferData.formatetc, pFormatetc, FORMATETC.sizeof);
 	transferData.type = transferData.formatetc.cfFormat;
 	
+	if (transferData.type == CFSTR_PREFERREDDROPEFFECT) return COM.S_OK;
+	
 	// is this type supported by the transfer agent?
 	for (int i = 0; i < transferAgents.length; i++){
 		if (transferAgents[i].isSupportedType(transferData))
