diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings
index 520c2dff37660cd1c389aa491980c5aa599af9ff..883e849ceafc02f378a0859c07a6cc6c3dc8dbf5 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/.ratings
@@ -5,7 +5,7 @@ LibraryView.java 6f7273ee49b9049c7267c129bd59ed27ec5872e2 GREEN
 LibraryViewDragSourceAdapter.java 56ef61b214ef5d6cb5b751791a92158bda0391ec GREEN
 LinkWithEditorPartListener.java c5ab74424378e7b158a805c4dd14fc03c8abeded GREEN
 MarkerViewContentProvider.java 297d9a5c355047796dc938eb909fd1cf27a2cbf3 GREEN
-MarkerViewPart.java 074e8e65c46daf50749d26d5eb866eef3eac2f2d GREEN
+MarkerViewPart.java cbb650271b6877af205421b7cb11f930440a7ef9 GREEN
 NavigatorNewMenu.java a35e391960d1dacbe7f77982e53e1891e9382d5a GREEN
 NavigatorTreeContentProvider.java 1bdefa28c5e2c2619cabbcd1946269a52db34e6c GREEN
 NavigatorTreeContentSorter.java 76fc94e441ac1a8f2c5ae573f0e2b1e6fa73c31a GREEN
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java
index 074e8e65c46daf50749d26d5eb866eef3eac2f2d..cbb650271b6877af205421b7cb11f930440a7ef9 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/internal/views/MarkerViewPart.java
@@ -38,6 +38,7 @@ import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.part.ViewPart;
 import org.fortiss.tooling.kernel.extension.data.IConstraintViolation;
 import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity;
+import org.fortiss.tooling.kernel.extension.data.ITopLevelElement;
 import org.fortiss.tooling.kernel.service.IPersistencyService;
 import org.fortiss.tooling.kernel.ui.extension.IModelElementHandler;
 import org.fortiss.tooling.kernel.ui.internal.MarkerService;
@@ -95,9 +96,9 @@ public class MarkerViewPart extends ViewPart {
 				if(cell.getElement() instanceof IConstraintViolation) {
 					IConstraintViolation<? extends EObject> violation =
 							(IConstraintViolation<? extends EObject>)cell.getElement();
+					IModelElementHandlerService hs = IModelElementHandlerService.getInstance();
 					IModelElementHandler<EObject> handler =
-							IModelElementHandlerService.getInstance().getModelElementHandler(
-									violation.getSource());
+							hs.getModelElementHandler(violation.getSource());
 					cell.setText(handler != null ? handler.getName(violation.getSource()) : "");
 				} else {
 					cell.setText("");
@@ -123,13 +124,17 @@ public class MarkerViewPart extends ViewPart {
 				if(cell.getElement() instanceof IConstraintViolation) {
 					IConstraintViolation<? extends EObject> violation =
 							(IConstraintViolation<? extends EObject>)cell.getElement();
-					EObject rootElement =
-							IPersistencyService.getInstance()
-									.getTopLevelElementFor(violation.getSource())
-									.getRootModelElement();
-					IModelElementHandler<EObject> handler =
-							IModelElementHandlerService.getInstance().getModelElementHandler(
-									rootElement);
+					IPersistencyService ps = IPersistencyService.getInstance();
+					ITopLevelElement topElement = ps.getTopLevelElementFor(violation.getSource());
+
+					IModelElementHandler<EObject> handler = null;
+					EObject rootElement = null;
+					if(topElement != null) {
+						rootElement = topElement.getRootModelElement();
+
+						IModelElementHandlerService hs = IModelElementHandlerService.getInstance();
+						handler = hs.getModelElementHandler(rootElement);
+					}
 					cell.setText(handler != null ? handler.getName(rootElement) : "");
 				} else {
 					cell.setText("");
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings
index bf1fb819daf15007719007c117f4d2cff7dc5edd..c96e219b793bd221af192ae966734f956cb18def 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/.ratings
@@ -1,6 +1,6 @@
 ActionUtils.java 4553e487264e3d1f86f4767da4a7400cce4b9a5d GREEN
 ConstraintsUIUtils.java 69d5e08bbf768baf2790380e36f1020ef826a33e GREEN
-CopyPasteUtils.java 7da2d871bebecc7010e699b4625e1614bf2392ab GREEN
+CopyPasteUtils.java 66ff2c44bef3bfecc85a6d3109c6b15a8960fa38 GREEN
 DataBindingUtils.java 0818014c193a22d5968435e78590368b95138d5e GREEN
 DragAndDropUtils.java 7aab91518aa12d76533a345bf6ed0be9ac7ff0e5 GREEN
 EObjectSelectionUtils.java 928280b5dd3bb634debc1ac3be9f15b4e45f2683 GREEN
diff --git a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/CopyPasteUtils.java b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/CopyPasteUtils.java
index 7da2d871bebecc7010e699b4625e1614bf2392ab..66ff2c44bef3bfecc85a6d3109c6b15a8960fa38 100644
--- a/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/CopyPasteUtils.java
+++ b/org.fortiss.tooling.kernel.ui/src/org/fortiss/tooling/kernel/ui/util/CopyPasteUtils.java
@@ -74,9 +74,9 @@ public class CopyPasteUtils {
 						((IConstrained)subObj).getConstraintInstances().clear();
 					}
 				}
-				copier.copyReferences();
 				i++;
 			}
+			copier.copyReferences();
 			EList<ISpeciallyCopyiable> specialSel =
 					pickInstanceOf(ISpeciallyCopyiable.class, new BasicEList<EObject>(sel));
 			for(ISpeciallyCopyiable obj : specialSel) {
@@ -121,16 +121,23 @@ public class CopyPasteUtils {
 			return;
 		}
 
-		EcoreUtil.Copier copier = new EcoreUtil.Copier();
+		// canPasteInto() ensures that clip-board is non-empty
+		boolean sameResource = getClipBoardContent()[0].eResource() == target.eResource();
+
+		// Use original (non-copied) references only when copying within the same model resource.
+		// Otherwise, the copy in the destination resource will have a reference to the original
+		// resource.
+		EcoreUtil.Copier copier = new EcoreUtil.Copier(true, sameResource);
 		BasicEList<EObject> copiedObjects = new BasicEList<EObject>();
 		for(EObject obj : getClipBoardContent()) {
 			EObject copy = copier.copy(obj);
 			adaptCopyNames(copy, target);
-			copier.copyReferences();
 			IElementCompositorService.getInstance().compose(target, copy,
 					new PasteContext(getEditedEObject(), copier));
 			copiedObjects.add(copy);
 		}
+		copier.copyReferences();
+
 		for(EObject obj : getClipBoardContent()) {
 			if(obj instanceof ISpeciallyCopyiable) {
 				((ISpeciallyCopyiable)obj).specialCopyHook(copier);