diff --git a/projects/common/components/marking-bar/marking-button.component.ts b/projects/common/components/marking-bar/marking-button.component.ts
index 208978aaa00d1a492ea56c0d91cc2a88026d7154..969aea651415b47fb8381b5827e71047ced6456f 100644
--- a/projects/common/components/marking-bar/marking-button.component.ts
+++ b/projects/common/components/marking-bar/marking-button.component.ts
@@ -10,8 +10,7 @@ import {
             [style.border-color]="selected ? 'black' : color"
             mat-mini-fab
             [style.background-color]="color"
-            (mousedown)="emitSelectedChanged($event)"
-            (touchstart)="emitSelectedChanged($event)">
+            (pointerdown)="emitSelectedChanged()">
       <mat-icon *ngIf="mode === 'mark'"
                 class="marking-icon">border_color
       </mat-icon>
@@ -36,11 +35,7 @@ export class MarkingButtonComponent {
     color: string,
   }>();
 
-  emitSelectedChanged(event: TouchEvent | MouseEvent): void {
-    if (event instanceof TouchEvent && event.cancelable) {
-      event.preventDefault();
-    }
-    event.stopPropagation();
+  emitSelectedChanged(): void {
     this.selected = !this.selected;
     this.selectedChanged.emit({ selected: this.selected, mode: this.mode, color: this.color });
   }
diff --git a/projects/common/components/ui-elements/text.component.ts b/projects/common/components/ui-elements/text.component.ts
index 5c8ce80211234e4e5e10cdcffcea191d6fc7d21d..3b5d05de511ddbeba2f970ec68ac46599a5fd732 100644
--- a/projects/common/components/ui-elements/text.component.ts
+++ b/projects/common/components/ui-elements/text.component.ts
@@ -30,8 +30,7 @@ import { TextElement, ValueChangeElement } from '../../interfaces/elements';
              [style.font-style]="elementModel.styling.italic ? 'italic' : ''"
              [style.text-decoration]="elementModel.styling.underline ? 'underline' : ''"
              [innerHTML]="savedText || elementModel.text | safeResourceHTML"
-             (touchstart)="emitStartSelection($event)"
-             (mousedown)="emitStartSelection($event)">
+             (pointerdown)="emitStartSelection($event)">
         </div>
     </div>
   `,
@@ -54,7 +53,7 @@ export class TextComponent extends ElementComponent {
   @Input() elementModel!: TextElement;
   @Input() savedText!: string;
   @Output() elementValueChanged = new EventEmitter<ValueChangeElement>();
-  @Output() startSelection = new EventEmitter<MouseEvent | TouchEvent>();
+  @Output() startSelection = new EventEmitter<PointerEvent>();
   @Output() applySelection = new EventEmitter<{
     active: boolean,
     mode: 'mark' | 'delete',
@@ -66,7 +65,7 @@ export class TextComponent extends ElementComponent {
 
   @ViewChild('textContainerRef') textContainerRef!: ElementRef;
 
-  emitStartSelection(event: TouchEvent | MouseEvent): void {
+  emitStartSelection(event: PointerEvent): void {
     if (this.elementModel.highlightableYellow ||
       this.elementModel.highlightableTurquoise ||
       this.elementModel.highlightableOrange) {
diff --git a/projects/player/src/app/components/element-text-group/element-text-group.component.html b/projects/player/src/app/components/element-text-group/element-text-group.component.html
index eea635cb194527b50e3f111f903b1bbb9c5c4dbb..a1704e06343a76807663954f6059d37e90752f68 100644
--- a/projects/player/src/app/components/element-text-group/element-text-group.component.html
+++ b/projects/player/src/app/components/element-text-group/element-text-group.component.html
@@ -1,18 +1,15 @@
-<div class="inline-container" cdkOverlayOrigin #overlayOrigin="cdkOverlayOrigin">
-  <aspect-text
-      #elementComponent
-      [elementModel]="elementModel | cast: TextElement"
-      [savedText]="initialValue"
-      (applySelection)="applySelection($event, elementComponent)"
-      (startSelection)="startSelection($event, elementComponent)"
-      (elementValueChanged)="unitStateService.changeElementValue($event)">
-  </aspect-text>
-</div>
+<aspect-text
+    #elementComponent
+    [elementModel]="elementModel | cast: TextElement"
+    [savedText]="initialValue"
+    (applySelection)="applySelection($event, elementComponent)"
+    (startSelection)="startSelection($event, elementComponent)"
+    (elementValueChanged)="unitStateService.changeElementValue($event)">
+</aspect-text>
 
 <aspect-floating-marking-bar
     *ngIf="elementModel.type === 'text'"
     [elementComponent]="elementComponent"
-    [overlayOrigin]="overlayOrigin"
     [isMarkingBarOpen]="isMarkingBarOpen"
     [textComponentRect]="textComponentRect"
     [textComponentContainerScrollTop]="textComponentContainerScrollTop"
diff --git a/projects/player/src/app/components/element-text-group/element-text-group.component.ts b/projects/player/src/app/components/element-text-group/element-text-group.component.ts
index 6eb67fc9442fc98ce61fb6f9b51c2c82d695efc5..f999a4a8df6c5a563717c6a2f38669bc041d0cb8 100644
--- a/projects/player/src/app/components/element-text-group/element-text-group.component.ts
+++ b/projects/player/src/app/components/element-text-group/element-text-group.component.ts
@@ -64,14 +64,11 @@ export class ElementTextGroupComponent extends ElementGroupDirective implements
     }
   }
 
-  startSelection(pointerDown: MouseEvent | TouchEvent, elementComponent: TextComponent): void {
+  startSelection(pointerDown: PointerEvent, elementComponent: TextComponent): void {
     this.isMarkingBarOpen = false;
     this.nativeEventService.pointerUp
       .pipe(takeUntil(this.ngUnsubscribe), first())
-      .subscribe((pointerUp: TouchEvent | MouseEvent) => {
-        if (pointerUp.cancelable) {
-          pointerUp.preventDefault();
-        }
+      .subscribe((pointerUp: PointerEvent) => {
         this.stopSelection(
           this.getClientPointFromEvent(pointerUp),
           pointerUp.ctrlKey,
@@ -110,9 +107,9 @@ export class ElementTextGroupComponent extends ElementGroupDirective implements
     }
   }
 
-  private getClientPointFromEvent = (event: MouseEvent | TouchEvent): { clientX: number, clientY: number } => ({
-    clientX: (event instanceof MouseEvent) ? event.clientX : event.changedTouches[0].clientX,
-    clientY: (event instanceof MouseEvent) ? event.clientY : event.changedTouches[0].clientY
+  private getClientPointFromEvent = (event: PointerEvent): { clientX: number, clientY: number } => ({
+    clientX: event.clientX,
+    clientY: event.clientY
   });
 
   private openMarkingBar(
@@ -120,7 +117,7 @@ export class ElementTextGroupComponent extends ElementGroupDirective implements
     downPosition: { clientX: number, clientY: number },
     elementComponent: TextComponent
   ) {
-    this.markingBarPosition.left = downPosition.clientY > mouseUp.clientY ? downPosition.clientX : mouseUp.clientX;
+    this.markingBarPosition.left = downPosition.clientX > mouseUp.clientX ? downPosition.clientX : mouseUp.clientX;
     this.markingBarPosition.top = downPosition.clientY > mouseUp.clientY ? downPosition.clientY : mouseUp.clientY;
     this.textComponentContainerScrollTop =
       elementComponent.domElement.closest('.fixed-size-content')?.scrollTop || 0;
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 007152522f4cae1dc6fe983bebf1ee3534797586..34005a08dc72957259e410a00c2c1d4d5a5f6b47 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 @@
       elementModel.highlightableTurquoise ||
       elementModel.highlightableOrange"
     cdkConnectedOverlay
-    [cdkConnectedOverlayOrigin]="overlayOrigin"
+    [cdkConnectedOverlayOrigin]="elementComponent"
     [cdkConnectedOverlayPositions]="positions"
     [cdkConnectedOverlayOpen]="isMarkingBarOpen">
   <div class="marking-bar-container"
diff --git a/projects/player/src/app/components/floating-marking-bar/floating-marking-bar.component.ts b/projects/player/src/app/components/floating-marking-bar/floating-marking-bar.component.ts
index 43356536a0441fae89622448b7686b74ce6e6d3a..4d4be56ff8bf9cce45a0e1260c2a4289669647f1 100644
--- a/projects/player/src/app/components/floating-marking-bar/floating-marking-bar.component.ts
+++ b/projects/player/src/app/components/floating-marking-bar/floating-marking-bar.component.ts
@@ -1,7 +1,7 @@
 import {
   Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges
 } from '@angular/core';
-import { CdkOverlayOrigin, ConnectedPosition } from '@angular/cdk/overlay';
+import { ConnectedPosition } from '@angular/cdk/overlay';
 import { ElementComponent } from '../../../../../common/directives/element-component.directive';
 import { TextComponent } from '../../../../../common/components/ui-elements/text.component';
 import { TextElement } from '../../../../../common/interfaces/elements';
@@ -13,7 +13,6 @@ import { TextElement } from '../../../../../common/interfaces/elements';
 })
 export class FloatingMarkingBarComponent implements OnInit, OnChanges {
   @Input() elementComponent!: ElementComponent;
-  @Input() overlayOrigin!: CdkOverlayOrigin;
   @Input() isMarkingBarOpen!: boolean;
   @Input() position!: { top: number, left: number };
   @Input() textComponentRect!: DOMRect;
diff --git a/projects/player/src/app/services/native-event.service.ts b/projects/player/src/app/services/native-event.service.ts
index 07bd9cb8a605fe0f4aa888182c24354ed6cd6dac..52a7fe551790b89fe90c55942dbc7fab5ae84d61 100644
--- a/projects/player/src/app/services/native-event.service.ts
+++ b/projects/player/src/app/services/native-event.service.ts
@@ -10,8 +10,8 @@ import { mergeMap } from 'rxjs/operators';
 })
 export class NativeEventService {
   private _focus = new Subject<boolean>();
-  private _pointerUp = new Subject<MouseEvent | TouchEvent>();
-  private _pointerDown = new Subject<MouseEvent | TouchEvent>();
+  private _pointerDown = new Subject<PointerEvent>();
+  private _pointerUp = new Subject<PointerEvent>();
   private _resize = new Subject<number>();
 
   constructor(@Inject(DOCUMENT) private document: Document) {
@@ -23,33 +23,11 @@ export class NativeEventService {
         () => this._focus.next(document.hasFocus())// Do something with the event here
       );
 
-    from(['mouseup', 'touchend'])
-      .pipe(
-        mergeMap(event => fromEvent(window, event))
-      )
-      .subscribe(
-        (event: Event) => {
-          if (event instanceof TouchEvent) {
-            this._pointerUp.next(event as TouchEvent);
-          } else {
-            this._pointerUp.next(event as MouseEvent);
-          }
-        }
-      );
+    fromEvent(window, 'pointerup')
+      .subscribe(event => this._pointerUp.next(event as PointerEvent));
 
-    from(['mousedown', 'touchstart'])
-      .pipe(
-        mergeMap(event => fromEvent(window, event))
-      )
-      .subscribe(
-        (event: Event) => {
-          if (event instanceof TouchEvent) {
-            this._pointerDown.next(event as TouchEvent);
-          } else {
-            this._pointerDown.next(event as MouseEvent);
-          }
-        }
-      );
+    fromEvent(window, 'pointerdown')
+      .subscribe(event => this._pointerDown.next(event as PointerEvent));
 
     fromEvent(window, 'resize')
       .subscribe(() => this._resize.next(window.innerWidth));
@@ -59,11 +37,11 @@ export class NativeEventService {
     return this._focus.asObservable();
   }
 
-  get pointerUp(): Observable<MouseEvent | TouchEvent> {
+  get pointerUp(): Observable<PointerEvent> {
     return this._pointerUp.asObservable();
   }
 
-  get pointerDown(): Observable<MouseEvent | TouchEvent> {
+  get pointerDown(): Observable<PointerEvent> {
     return this._pointerDown.asObservable();
   }