diff --git a/modules/system/system.base.css b/modules/system/system.base.css
index a6748de..0968eff 100644
--- a/modules/system/system.base.css
+++ b/modules/system/system.base.css
@@ -132,11 +132,23 @@ div.tree-child-horizontal {
 /**
  * TableHeader behavior.
  *
+ * Sticky headers are by default positioned elements without an explicitly set
+ * z-index. Other positioned elements (relative, fixed or absolute) without an
+ * explicitly set z-index further down in the document source overlap sticky
+ * headers, for example fieldsets with 'position: relative'. This is unwanted
+ * (although correct) behavior, and therefore an explicit z-index needs to be
+ * set in order to make the sticky headers overlap these positioned elements
+ * again. However, in order to prevent overlap problems with elements that are
+ * positioned with an explicit z-index, the z-index set for sticky headers needs
+ * to be as low as possible, while still fixing the aforementioned unwanted
+ * behavior. If not explicitly set, positioned elements have a z-index of 0.
+ *
  * @see tableheader.js
  */
 table.sticky-header {
   background-color: #fff;
   margin-top: 0;
+  z-index: 1;
 }
 
 /**
