diff --git a/projects/player/src/app/app.module.ts b/projects/player/src/app/app.module.ts
index 41b7896c85eb823f175545a7e91f0eebb22a1f9b..f8260a89aa07c4af9ebec4e1936d6932bbcecb2d 100644
--- a/projects/player/src/app/app.module.ts
+++ b/projects/player/src/app/app.module.ts
@@ -10,6 +10,8 @@ import { KeyInputModule } from 'player/modules/key-input/key-input.module';
 import { UnitMenuModule } from 'player/modules/unit-menu/unit-menu.module';
 import { MetaDataService } from 'player/src/app/services/meta-data.service';
 import { ScrollingModule } from '@angular/cdk/scrolling';
+import { AsOverlayOriginPipe } from 'player/src/app/pipes/as-overlay-origin.pipe';
+import { HasReturnKeyPipe } from 'player/src/app/pipes/has-return-key.pipe';
 import { AppComponent } from './app.component';
 import { PageComponent } from './components/page/page.component';
 import { SectionComponent } from './components/section/section.component';
@@ -68,6 +70,8 @@ import { ExternalAppGroupElementComponent } from
     TextInputGroupElementComponent,
     CompoundGroupElementComponent,
     CastPipe,
+    AsOverlayOriginPipe,
+    HasReturnKeyPipe,
     TextGroupElementComponent,
     BaseGroupElementComponent,
     InteractiveGroupElementComponent,
diff --git a/projects/player/src/app/components/floating-keypad/floating-keypad.component.html b/projects/player/src/app/components/floating-keypad/floating-keypad.component.html
index b12014f7e455c166c42509c710b15671f5486f56..a02f478bdbbd3c96128c987e377864b554ff06bb 100644
--- a/projects/player/src/app/components/floating-keypad/floating-keypad.component.html
+++ b/projects/player/src/app/components/floating-keypad/floating-keypad.component.html
@@ -3,7 +3,7 @@
     cdkConnectedOverlay
     cdkConnectedOverlayPush
     [cdkConnectedOverlayScrollStrategy]="repositionScrollStrategy"
-    [cdkConnectedOverlayOrigin]="keypadService.elementComponent"
+    [cdkConnectedOverlayOrigin]="keypadService.elementComponent | asOverlayOrigin"
     [cdkConnectedOverlayPositions]="overlayPositions"
     [cdkConnectedOverlayOpen]="isKeypadOpen && keypadService.position === 'floating'">
   <aspect-keypad
@@ -15,7 +15,7 @@
       [customKeys]="keypadService.elementComponent.elementModel.inputAssistanceCustomKeys"
       [restrictToAllowedKeys]="keypadService.elementComponent.elementModel.restrictedToInputAssistanceChars"
       [hasArrowKeys]="keypadService.elementComponent.elementModel.hasArrowKeys"
-      [hasReturnKey]="!!keypadService.elementComponent.elementModel.hasReturnKey"
+      [hasReturnKey]="keypadService.elementComponent.elementModel | hasReturnKey"
       (backSpaceClicked)="keypadService.deleteCharacters(true)"
       (keyClicked)="keypadService.enterKey($event)">
   </aspect-keypad>
diff --git a/projects/player/src/app/components/floating-marking-bar/floating-marking-bar.component.html b/projects/player/src/app/components/floating-marking-bar/floating-marking-bar.component.html
index ff0ace08bc59587b1cdf518a1df9f4b745e6f0e8..ad2616be6e4135c7a71dbe97fe4bca23e09f2f39 100644
--- a/projects/player/src/app/components/floating-marking-bar/floating-marking-bar.component.html
+++ b/projects/player/src/app/components/floating-marking-bar/floating-marking-bar.component.html
@@ -3,7 +3,7 @@
       elementComponent.elementModel.highlightableTurquoise ||
       elementComponent.elementModel.highlightableOrange"
     cdkConnectedOverlay
-    [cdkConnectedOverlayOrigin]="elementComponent"
+    [cdkConnectedOverlayOrigin]="elementComponent | asOverlayOrigin"
     [cdkConnectedOverlayPositions]="overlayPositions"
     [cdkConnectedOverlayOpen]="isMarkingBarOpen">
   <div class="marking-bar-container"
diff --git a/projects/player/src/app/pipes/as-overlay-origin.pipe.ts b/projects/player/src/app/pipes/as-overlay-origin.pipe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..647a438e738e89923020604499baa8a6083fd2ba
--- /dev/null
+++ b/projects/player/src/app/pipes/as-overlay-origin.pipe.ts
@@ -0,0 +1,12 @@
+import { Pipe, PipeTransform } from '@angular/core';
+import { ElementComponent } from 'common/directives/element-component.directive';
+import { CdkOverlayOrigin } from '@angular/cdk/overlay';
+
+@Pipe({
+  name: 'asOverlayOrigin'
+})
+export class AsOverlayOriginPipe implements PipeTransform {
+  transform(elementComponent: ElementComponent): CdkOverlayOrigin {
+    return elementComponent as CdkOverlayOrigin;
+  }
+}
diff --git a/projects/player/src/app/pipes/has-return-key.pipe.ts b/projects/player/src/app/pipes/has-return-key.pipe.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a03867c7bde66b81fa37b2af97bdcf9fe5a670c7
--- /dev/null
+++ b/projects/player/src/app/pipes/has-return-key.pipe.ts
@@ -0,0 +1,15 @@
+import { Pipe, PipeTransform } from '@angular/core';
+import { TextInputElement } from 'common/models/elements/element';
+import { TextAreaElement } from 'common/models/elements/input-elements/text-area';
+
+@Pipe({
+  name: 'hasReturnKey'
+})
+export class HasReturnKeyPipe implements PipeTransform {
+  transform(elementModel: TextInputElement): boolean {
+    if (elementModel.type === 'text-area') {
+      return (elementModel as TextAreaElement).hasReturnKey;
+    }
+    return false;
+  }
+}