diff --git a/docs/release-notes-editor.txt b/docs/release-notes-editor.txt
index e74501fb29f49dd438e5b7435bad9e2f8d45fd07..52d3a833709cd478402779c1beecd600a439340c 100644
--- a/docs/release-notes-editor.txt
+++ b/docs/release-notes-editor.txt
@@ -1,5 +1,8 @@
 Editor
 ======
+1.23.0
+ - Fix setting of the default z-index for frames
+
 1.22.0
 - Rework cloze element
   No longer uses 'backslash-markers'. Instead inserts and renders
diff --git a/projects/common/ui-elements/frame/frame-element.ts b/projects/common/ui-elements/frame/frame-element.ts
index d1b1717148fdc80b586ea28b6a84928874eb94ef..52a0a6c6310bb2ec84e1bc9049a4f2edb268daed 100644
--- a/projects/common/ui-elements/frame/frame-element.ts
+++ b/projects/common/ui-elements/frame/frame-element.ts
@@ -14,16 +14,17 @@ export class FrameElement extends UIElement implements PositionedElement, Surfac
   borderRadius: number = 0;
 
   positionProps: PositionProperties;
+
   surfaceProps: SurfaceProperties;
 
   constructor(serializedElement: Partial<UIElement>) {
     super(serializedElement);
     Object.assign(this, serializedElement);
+    if (serializedElement.positionProps && serializedElement.positionProps.zIndex === undefined) {
+      serializedElement.positionProps.zIndex = -1;
+    }
     this.positionProps = initPositionedElement(serializedElement);
     this.surfaceProps = initSurfaceElement(serializedElement);
-
-    this.positionProps.zIndex = -1;
-
     this.surfaceProps.backgroundColor =
       serializedElement.surfaceProps?.backgroundColor as string ||
       'transparent';