diff --git a/org.fortiss.tooling.kernel.ui/trunk/plugin.xml b/org.fortiss.tooling.kernel.ui/trunk/plugin.xml
index eae388ffcd619ae46d84705673523f7746df3b1a..951c33d73c17843b168386a7b2507a39bcd1da43 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/plugin.xml
+++ b/org.fortiss.tooling.kernel.ui/trunk/plugin.xml
@@ -112,25 +112,12 @@
    </extension>
    <extension
          point="org.eclipse.ui.decorators">
-      <decorator
-            class="org.fortiss.tooling.kernel.ui.internal.MarkerServiceLabelDecorator"
-            id="org.fortiss.tooling.kernel.ui.internal.MarkerServiceLabelDecorator"
-            label="Marker Service Decorator"
-            lightweight="true"
-            location="BOTTOM_LEFT"
-            state="true">
-         <enablement>
-            <objectClass
-                  name="org.eclipse.emf.ecore.EObject">
-            </objectClass>
-         </enablement>
-      </decorator>
       <decorator
             class="org.fortiss.tooling.kernel.ui.internal.ConstraintLabelDecorator"
             id="org.fortiss.tooling.kernel.ui.internal.ConstraintLabelDecorator"
             label="Constraint Decorator"
             lightweight="true"
-            location="TOP_LEFT"
+            location="BOTTOM_LEFT"
             state="true">
          <enablement>
             <objectClass
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ConstraintLabelDecorator.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ConstraintLabelDecorator.java
index d7546958cc86448d6f673cc378d134f5c52d2963..7495f09023b20ebbbf635bb026a824e2513139be 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ConstraintLabelDecorator.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/ConstraintLabelDecorator.java
@@ -17,14 +17,14 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.kernel.ui.internal;
 
+import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.viewers.BaseLabelProvider;
 import org.eclipse.jface.viewers.IDecoration;
 import org.eclipse.jface.viewers.ILightweightLabelDecorator;
-import org.fortiss.tooling.kernel.model.constraints.IConstrained;
-import org.fortiss.tooling.kernel.ui.ToolingKernelUIActivator;
+import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity;
+import org.fortiss.tooling.kernel.ui.ESharedImages;
 import org.fortiss.tooling.kernel.ui.service.IMarkerService;
 import org.fortiss.tooling.kernel.ui.util.ConstraintsUtils;
-import org.fortiss.tooling.kernel.ui.util.ConstraintsUtils.ClassifiedStatuses;
 
 /**
  * Label decorator for the {@link IMarkerService} decorations: errors, warnings, etc.
@@ -40,21 +40,21 @@ public final class ConstraintLabelDecorator extends BaseLabelProvider implements
 	/** {@inheritDoc} */
 	@Override
 	public void decorate(Object element, IDecoration decoration) {
-		if(element instanceof IConstrained) {
-			IConstrained constrained = (IConstrained)element;
-			ClassifiedStatuses classifiedStatuses =
-					ConstraintsUtils.getClassifiedStatuses(constrained);
-			if(!classifiedStatuses.failedStatuses.isEmpty()) {
-				decoration.addOverlay(ToolingKernelUIActivator
-						.getImageDescriptor("icons/constraintFailOverlay.png"));
-			} else if(!classifiedStatuses.errorStatuses.isEmpty()) {
-				decoration.addOverlay(ToolingKernelUIActivator
-						.getImageDescriptor("icons/constraintErrorOverlay.png"));
-			} else if(!classifiedStatuses.outdatedStatuses.isEmpty()) {
-				decoration.addOverlay(ToolingKernelUIActivator
-						.getImageDescriptor("icons/constraintOutdatedOverlay.png"));
-			} else if(!classifiedStatuses.failedStatuses.isEmpty()) {
-				decoration.addOverlay(null);
+		if(element instanceof EObject) {
+			ESeverity sev = IMarkerService.INSTANCE.getHighestViolationSeverity((EObject)element);
+			sev = ConstraintsUtils.augmentSeverityWithConstraintSeverity(sev, (EObject)element);
+			switch(sev) {
+				case FATAL:
+					decoration.addOverlay(ESharedImages.FATAL_OVERLAY.getImageDescriptor());
+					break;
+				case ERROR:
+					decoration.addOverlay(ESharedImages.ERROR_OVERLAY.getImageDescriptor());
+					break;
+				case WARNING:
+					decoration.addOverlay(ESharedImages.WARNING_OVERLAY.getImageDescriptor());
+					break;
+				default:
+					// ignore info and debug
 			}
 		}
 	}
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/MarkerService.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/MarkerService.java
index 5850a190e01b68282b1044042e15a9d1c20bddfd..f924e917d5a6958ccb192b44a6831e986029df4f 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/MarkerService.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/MarkerService.java
@@ -41,10 +41,12 @@ import org.eclipse.ui.progress.UIJob;
 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.model.constraints.IConstrained;
 import org.fortiss.tooling.kernel.service.IPersistencyService;
 import org.fortiss.tooling.kernel.service.listener.IPersistencyServiceListener;
 import org.fortiss.tooling.kernel.ui.internal.views.MarkerViewPart;
 import org.fortiss.tooling.kernel.ui.service.IMarkerService;
+import org.fortiss.tooling.kernel.ui.util.ConstraintsUtils;
 
 /**
  * This class implements the {@link IMarkerService} interface.
@@ -259,10 +261,10 @@ public class MarkerService implements IMarkerService, IPersistencyServiceListene
 		/** Returns the highest severity for the given element. */
 		public ESeverity getHighestSeverity(EObject element) {
 			ESeverity sev = highestSeverityMap.get(element);
-			if(sev == null) {
-				return ESeverity.lowest();
+			if(element instanceof IConstrained) {
+				sev = ConstraintsUtils.augmentSeverityWithConstraintSeverity(sev, element);
 			}
-			return sev;
+			return sev == null ? ESeverity.lowest() : sev;
 		}
 
 		/** Updates the cache entry. */
diff --git a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ConstraintsUtils.java b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ConstraintsUtils.java
index 01cbd06994c275e5ac0ee706837269aed63e296b..a5e02a372eec1b9e9f3f0fe3678cc7750f554e2d 100644
--- a/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ConstraintsUtils.java
+++ b/org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/util/ConstraintsUtils.java
@@ -17,9 +17,14 @@ $Id$
 +--------------------------------------------------------------------------*/
 package org.fortiss.tooling.kernel.ui.util;
 
+import static org.fortiss.tooling.kernel.extension.data.IConstraintViolation.SEVERITY_DIRECT_COMPARATOR;
+
 import java.util.ArrayList;
 import java.util.List;
 
+import org.eclipse.emf.ecore.EObject;
+import org.fortiss.tooling.kernel.extension.data.IConstraintViolation;
+import org.fortiss.tooling.kernel.extension.data.IConstraintViolation.ESeverity;
 import org.fortiss.tooling.kernel.model.constraints.ConstraintsFactory;
 import org.fortiss.tooling.kernel.model.constraints.ErrorVerificationStatus;
 import org.fortiss.tooling.kernel.model.constraints.FailVerificationStatus;
@@ -101,4 +106,44 @@ public class ConstraintsUtils {
 		}
 		return res;
 	}
+
+	/**
+	 * @param c
+	 * @return {@link ESeverity} corresponding to the status of the constraint <code>c</code>
+	 */
+	public static ESeverity getConstraintSeverity(IConstraint c) {
+		if(c.getVerificationStatus() instanceof FailVerificationStatus) {
+			return ESeverity.ERROR;
+		} else if(c.getVerificationStatus() instanceof ErrorVerificationStatus) {
+			return ESeverity.ERROR;
+		} else if(c.getVerificationStatus() instanceof OutdatedVerificationStatus) {
+			return ESeverity.WARNING;
+		} else {
+			return ESeverity.lowest();
+		}
+	}
+
+	/**
+	 * @param c
+	 * @return Severity corresponding to the status of the constraints of <code>c</code>.
+	 */
+	public static ESeverity getSeverity(IConstrained c) {
+		try {
+			return c.getConstraints().stream().map(cstr -> getConstraintSeverity(cstr))
+					.sorted(IConstraintViolation.SEVERITY_DIRECT_COMPARATOR).findFirst().get();
+		} catch(Exception e) {
+			return null;
+		}
+	}
+
+	public static ESeverity augmentSeverityWithConstraintSeverity(ESeverity sev,
+			EObject modelElement) {
+		if(modelElement instanceof IConstrained) {
+			ESeverity sev2 = ConstraintsUtils.getSeverity((IConstrained)modelElement);
+			if(sev == null || (sev2 != null && SEVERITY_DIRECT_COMPARATOR.compare(sev2, sev) < 0)) {
+				sev = sev2;
+			}
+		}
+		return sev == null ? ESeverity.lowest() : sev;
+	}
 }
diff --git a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/data/IConstraintViolation.java b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/data/IConstraintViolation.java
index 7c42012c4165d302e744e72d746b0f61a8cdb94b..b3aaba7e3b286ac34fdb694c1db2be8bd160db10 100644
--- a/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/data/IConstraintViolation.java
+++ b/org.fortiss.tooling.kernel/trunk/src/org/fortiss/tooling/kernel/extension/data/IConstraintViolation.java
@@ -101,6 +101,16 @@ public interface IConstraintViolation<T extends EObject> extends IAdaptable {
 		void applyQuickFix();
 	}
 
+	/** Severity comparator. To use directly with lists of severities. */
+	public static final Comparator<ESeverity> SEVERITY_DIRECT_COMPARATOR =
+			new Comparator<ESeverity>() {
+				/** {@inheritDoc} */
+				@Override
+				public int compare(ESeverity sev0, ESeverity sev1) {
+					return ESeverity.getIntSeverity(sev0) - ESeverity.getIntSeverity(sev1);
+				}
+			};
+
 	/** Stores the severity comparator used during violation sorting. */
 	public static final Comparator<IConstraintViolation<? extends EObject>> SEVERITY_COMPARATOR =
 			new Comparator<IConstraintViolation<? extends EObject>>() {
@@ -108,9 +118,9 @@ public interface IConstraintViolation<T extends EObject> extends IAdaptable {
 				@Override
 				public int compare(IConstraintViolation<? extends EObject> arg0,
 						IConstraintViolation<? extends EObject> arg1) {
-					int sev0 = ESeverity.getIntSeverity(arg0.getSeverity());
-					int sev1 = ESeverity.getIntSeverity(arg1.getSeverity());
-					return sev0 - sev1;
+					return SEVERITY_DIRECT_COMPARATOR.compare(arg0.getSeverity(),
+							arg1.getSeverity());
 				}
 			};
+
 }