diff --git a/cx-layer.lisp b/cx-layer.lisp
index c968b10bfa43f92805e140b25024c3595f4a2a29..5e83b0df20495c1630448fdf252c54d9850b97e7 100644
--- a/cx-layer.lisp
+++ b/cx-layer.lisp
@@ -52,10 +52,13 @@
   (let ((layer-class (find-layer layer))
         (active-context-specializer (layer-context-specializer active-context)))
     (when (subtypep active-context-specializer layer-class)
-      (if (eq (first (class-direct-superclasses active-context-specializer)) layer-class)
-          (return-from maybe-create-active-layer-context active-context)
-        (setq active-context (ensure-inactive-layer-context layer active-context)
-              active-context-specializer (layer-context-specializer active-context))))
+      (let ((first-layer (first (class-direct-superclasses active-context-specializer))))
+        (cond ((eq first-layer layer-class)
+               (return-from maybe-create-active-layer-context active-context))
+              ((subtypep first-layer layer-class)
+               (error "Layer ~S cannot be placed in front of ~S because the latter inherits from the former." (layer-name layer-class) (layer-name first-layer)))
+              (t (setq active-context (ensure-inactive-layer-context layer active-context)
+                       active-context-specializer (layer-context-specializer active-context))))))
     (let ((new-specializer
            (make-instance 'standard-class
                           :direct-superclasses
@@ -94,7 +97,10 @@
             finally
             (return (loop with new-layer-context = *root-context*
                           for active-layer in (cdr active-layers)
-                          unless (eq active-layer layer-class) do
+                          if (subtypep active-layer layer-class) do
+                          (unless (eq active-layer layer-class)
+                            (error "The layer ~S cannot be deactivated or rearranged because the active layer ~S inherits from it." (layer-name layer-class) (layer-name active-layer)))
+                          else do
                           (setq new-layer-context
                                 (ensure-active-layer-context
                                  (class-name active-layer)