diff --git a/e2e/src/layout/viewerCtxMenu.prod.e2e-spec.js b/e2e/src/layout/viewerCtxMenu.prod.e2e-spec.js
index f5f208a3fd4db4d1da08c280f9c02f4fff12f90f..71aceb252fb67f1eaa618ba860ab43dd159a018b 100644
--- a/e2e/src/layout/viewerCtxMenu.prod.e2e-spec.js
+++ b/e2e/src/layout/viewerCtxMenu.prod.e2e-spec.js
@@ -41,6 +41,16 @@ describe('> viewerCtxMenu', () => {
           expect(visible).toBeTrue()
         })
 
+        it('> pos does not change when click inside', async () => {
+          const { x: xBefore, y: yBefore, height: hBefore } = await iavPage.isAt(`[aria-label="${ARIA_LABELS.CONTEXT_MENU}"]`)
+          await iavPage.click(`[aria-label="${ARIA_LABELS.SHOW_IN_OTHER_REF_SPACE}"]`)
+          await iavPage.wait(500)
+          const { x: xAfter, y: yAfter, height: hAfter } = await iavPage.isAt(`[aria-label="${ARIA_LABELS.CONTEXT_MENU}"]`)
+          expect(xBefore).toEqual(xAfter)
+          expect(yBefore).toEqual(yAfter)
+          expect(hAfter).toBeGreaterThan(hBefore)
+        })
+
         it('> disappear again on click of anywhere else', async () => {
           await iavPage.cursorMoveToAndClick({ position: [10, 10] })
           await iavPage.wait(500)
diff --git a/e2e/src/util.js b/e2e/src/util.js
index 457dfcdd6ab950ed001d732461ed34c6e4682827..d14599598360b9630fe9cf18f12a23c21f44dcc8 100644
--- a/e2e/src/util.js
+++ b/e2e/src/util.js
@@ -122,6 +122,12 @@ class WdBase{
     return isDisplayed
   }
 
+  async isAt(cssSelector){
+    if (!cssSelector) throw new Error(`getText needs to define css selector`)
+    const { x, y, width, height } = await this._browser.findElement( By.css(cssSelector) ).getRect()
+    return { x, y, width, height }
+  }
+
   historyBack() {
     return this._browser.navigate().back()
   }
diff --git a/src/atlasViewer/atlasViewer.component.ts b/src/atlasViewer/atlasViewer.component.ts
index b349816e43b06113300323378a3985697ac76207..817f342be4d0fd3d1a418a94d474a853a12dfd2e 100644
--- a/src/atlasViewer/atlasViewer.component.ts
+++ b/src/atlasViewer/atlasViewer.component.ts
@@ -382,20 +382,28 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit {
     )
   }
 
-  public mouseClickDocument(event) {
+  public mouseClickDocument(event: MouseEvent) {
 
     const dismissRClCtxtMenu = this.rClContextualMenu.isShown
 
     const next = () => {
 
       if (!this.rClContextualMenu) { return }
-      this.rClContextualMenu.mousePos = [
-        event.clientX,
-        event.clientY,
-      ]
-  
-      if (dismissRClCtxtMenu) this.rClContextualMenu.hide()
-      else this.rClContextualMenu.show()
+
+      if (dismissRClCtxtMenu) {
+        if (this.rClContextualMenu.el.nativeElement.contains(event.target)) {
+
+        } else {
+          this.rClContextualMenu.hide()
+        }
+      } else {
+
+        this.rClContextualMenu.mousePos = [
+          event.clientX,
+          event.clientY,
+        ]
+        this.rClContextualMenu.show()
+      } 
     }
 
     this.nehubaClickOverride(next)
diff --git a/src/util/directives/FixedMouseContextualContainerDirective.directive.ts b/src/util/directives/FixedMouseContextualContainerDirective.directive.ts
index 058a27918cdfd262ad2edfe6fa55325629043c1f..d7fbf0905efa08166e8f864f45cf375a97950102 100644
--- a/src/util/directives/FixedMouseContextualContainerDirective.directive.ts
+++ b/src/util/directives/FixedMouseContextualContainerDirective.directive.ts
@@ -20,7 +20,7 @@ export class FixedMouseContextualContainerDirective implements AfterContentCheck
   public onHide: EventEmitter<null> = new EventEmitter()
 
   constructor(
-    private el: ElementRef,
+    public el: ElementRef,
     private cdr: ChangeDetectorRef,
   ) {
   }