diff --git a/projects/common/unit.ts b/projects/common/unit.ts
index 7e12cacd4abb342dc794ae66792ab44d4bf58458..075efcd369405691d7f021a6d63f4ee5ce02c89d 100644
--- a/projects/common/unit.ts
+++ b/projects/common/unit.ts
@@ -7,7 +7,8 @@ export interface UnitPage {
   [index: string]: string | number | boolean | undefined | UnitPageSection[];
   id: string;
   sections: UnitPageSection[];
-  width: number;
+  hasMaxWidth: boolean;
+  maxWidth: number;
   margin: number;
   backgroundColor: string;
   alwaysVisible: boolean;
diff --git a/projects/editor/src/app/UnitFactory.ts b/projects/editor/src/app/UnitFactory.ts
index 88e1b4c84f30653a3d81fe1e2c68169d20f3e841..e855b3419d8556a2a04e31ef9e606a615cc4cee6 100644
--- a/projects/editor/src/app/UnitFactory.ts
+++ b/projects/editor/src/app/UnitFactory.ts
@@ -17,7 +17,8 @@ export function createUnitPage(pageIndex: number): UnitPage {
   return {
     id: `page${pageIndex}`,
     sections: [],
-    width: 1100,
+    hasMaxWidth: false,
+    maxWidth: 1100,
     margin: 8,
     backgroundColor: 'white',
     alwaysVisible: false,
diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.html b/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.html
index 8e5e388bc04102e74c55607d4dd4aad46adfb425..a01ae6d330894dbaaeff3f4f16945b5780d43c0d 100644
--- a/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.html
+++ b/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.html
@@ -5,7 +5,7 @@
 <div class="canvasBackground" fxFlex>
   <div *ngIf="!sectionEditMode"
        class="canvasFrame"
-       [style.width.px]="page.width"
+       [style.width.px]="page.maxWidth"
        [style.padding.px]="page.margin"
        [style.background-color]="page.backgroundColor">
     <div cdkDropListGroup>
@@ -20,7 +20,7 @@
 
 
   <div *ngIf="sectionEditMode" class="drop-list"
-       [style.width.px]="page.width" [style.padding.px]="page.margin"
+       [style.width.px]="page.maxWidth" [style.padding.px]="page.margin"
        cdkDropList (cdkDropListDropped)="sectionDrop($event)" [cdkDropListData]="page.sections">
     <ng-container *ngFor="let section of page.sections; let i = index">
       <button mat-fab class="add-section-button"
@@ -35,7 +35,7 @@
     </ng-container>
   </div>
 
-  <button mat-fab class="add-section-button" [style.width.px]="page.width" [style.margin.px]="page.margin"
+  <button mat-fab class="add-section-button" [style.width.px]="page.maxWidth" [style.margin.px]="page.margin"
           (click)="addSection()">
     <mat-icon>add</mat-icon>
   </button>
diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.ts
index 5e87559a05b988d535773eaffa12deaae2e0aca5..e7f48d51b5088d155f09604184aa29323e9a8d25 100644
--- a/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/canvas/page-canvas.component.ts
@@ -35,8 +35,8 @@ export class PageCanvasComponent {
       if (newXPosition < 0) {
         newXPosition = 0;
       }
-      if (newXPosition > this.page.width - sourceItemModel.width) {
-        newXPosition = this.page.width - sourceItemModel.width;
+      if (newXPosition > this.page.maxWidth - sourceItemModel.width) {
+        newXPosition = this.page.maxWidth - sourceItemModel.width;
       }
       this.unitService.updateElementProperty(this.selectionService.getSelectedElements(), 'xPosition', newXPosition);
 
diff --git a/projects/editor/src/app/components/unit-view/page-view/properties/page-properties.component.ts b/projects/editor/src/app/components/unit-view/page-view/properties/page-properties.component.ts
index 96d07978e2870eb276aadd693b1303701545c96d..a1c04eeee1ce535c2b0cdc1c25239a54da55d576 100644
--- a/projects/editor/src/app/components/unit-view/page-view/properties/page-properties.component.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/properties/page-properties.component.ts
@@ -11,11 +11,15 @@ import { SelectionService } from '../../../../selection.service';
   selector: 'app-page-properties',
   template: `
     <div fxLayout="column">
-      <mat-form-field>
-        <mat-label>Breite</mat-label>
+      <mat-checkbox [checked]="selectedPage.hasMaxWidth"
+                    (change)="updateModel('hasMaxWidth', $any($event.source).checked)">
+        Maximalbreite setzen
+      </mat-checkbox>
+      <mat-form-field *ngIf="selectedPage.hasMaxWidth">
+        <mat-label>Maximalbreite</mat-label>
         <input matInput type="number"
-               [value]="selectedPage.width"
-               (change)="updateModel('width', $any($event.target).value)">
+               [value]="selectedPage.maxWidth"
+               (change)="updateModel('maxWidth', $any($event.target).value)">
       </mat-form-field>
       <mat-form-field>
         <mat-label>Randbreite</mat-label>
@@ -33,6 +37,12 @@ import { SelectionService } from '../../../../selection.service';
                     (change)="updateModel('alwaysVisible', $any($event.source).checked)">
         Immer angezeigt
       </mat-checkbox>
+      <mat-form-field *ngIf="selectedPage.alwaysVisible">
+        <mat-label>Seitenverhältnis (in Prozent)</mat-label>
+        <input matInput type="number" min="0" max="100"
+               [value]="selectedPage.alwaysVisibleAspectRatio"
+               (change)="updateModel('alwaysVisibleAspectRatio', $any($event.target).value)">
+      </mat-form-field>
     </div>
     `
 })
diff --git a/projects/editor/src/app/components/unit-view/page-view/properties/section-properties.component.ts b/projects/editor/src/app/components/unit-view/page-view/properties/section-properties.component.ts
index bdffd6dff940fff323a077c337077b6b2b78d4c8..163b4eade032c9c44ef19fbd21fb8f51e27bf564 100644
--- a/projects/editor/src/app/components/unit-view/page-view/properties/section-properties.component.ts
+++ b/projects/editor/src/app/components/unit-view/page-view/properties/section-properties.component.ts
@@ -136,7 +136,7 @@ export class SectionPropertiesComponent implements OnInit, OnDestroy {
       })
       .unsubscribe();
 
-    if (property === 'width' && value > selectedPage!.width) {
+    if (property === 'width' && value > selectedPage!.maxWidth) {
       this.messageService.showError('Darf nicht breiter als die Seite sein.');
     } else {
       this.unitService.updateSectionProperty(this.selectedPageSection, property, value);
diff --git a/projects/player/src/app/components/layout/layout.component.html b/projects/player/src/app/components/layout/layout.component.html
index 66105537eabc3d040fc48195fe03346c7aa6c804..5c1eb3e16a940e4bee562716ad2b7efb6652cd53 100644
--- a/projects/player/src/app/components/layout/layout.component.html
+++ b/projects/player/src/app/components/layout/layout.component.html
@@ -17,7 +17,7 @@
        [style.max-width.px]="layoutAlignment === 'row' ? alwaysVisiblePageWidth : layoutWidth">
     <div appHideFirstChild
          [hideFirstChild]="hidePageLabels"
-         [style.max-width.px]="alwaysVisiblePage.width"
+         [style.max-width.px]="alwaysVisiblePage.maxWidth"
          [style.margin.px]="alwaysVisiblePage.margin">
       <div class="mat-tab-label">{{'alwaysVisiblePage' | translate}} {{selectedIndex}}</div>
       <app-page [parentArrayIndex]="alwaysVisibleUnitPageIndex"
@@ -51,7 +51,7 @@
       <ng-container *ngFor="let page of pages; let i = index">
         <mat-tab *ngIf="!page.alwaysVisible"
                  label="{{'pageIndication' | translate: {index: playerPageIndices[i] + 1} }}">
-          <div [style.margin.px]="page.margin" [style.max-width.px]="page.width">
+          <div [style.margin.px]="page.margin" [style.max-width.px]="page.maxWidth">
             <app-page [parentArrayIndex]="i"
                       [index]="playerPageIndices[i]"
                       [parentForm]="parentForm"
@@ -81,7 +81,7 @@
              [pagesContainer]="pagesScrolledContainer"
              [selectIndex]="selectIndex"
              [index]="playerPageIndices[i]"
-             [style.max-width.px]="page.width"
+             [style.max-width.px]="page.maxWidth"
              [style.margin.px]="page.margin">
           <div class="mat-tab-label">
             {{'pageIndication' | translate: {index: playerPageIndices[i] + 1} }}
diff --git a/projects/player/src/app/components/layout/layout.component.ts b/projects/player/src/app/components/layout/layout.component.ts
index 4bb596cdd564fe5222ea0cfdd6458b9bedb48746..67dfbffc85e3b7598b60982a5053a386f43554f5 100644
--- a/projects/player/src/app/components/layout/layout.component.ts
+++ b/projects/player/src/app/components/layout/layout.component.ts
@@ -87,7 +87,7 @@ export class LayoutComponent implements OnInit {
       Math.max(...this.scrollPages.map((page: UnitPage): number => this.getAbsolutePageWidth(page))) : 0;
   }
 
-  private getAbsolutePageWidth = (page: UnitPage | undefined): number => ((page) ? 2 * page.margin + page.width : 0);
+  private getAbsolutePageWidth = (page: UnitPage | undefined): number => ((page) ? 2 * page.margin + page.maxWidth : 0);
 
   onSelectedIndexChange(selectedIndex: number): void {
     this.selectedIndexChange.emit(selectedIndex);