diff --git a/common/src/app/common/types/shape/interactions.cljc b/common/src/app/common/types/shape/interactions.cljc
index 8b4975bdc..d06a059bc 100644
--- a/common/src/app/common/types/shape/interactions.cljc
+++ b/common/src/app/common/types/shape/interactions.cljc
@@ -9,6 +9,7 @@
    [app.common.data :as d]
    [app.common.geom.point :as gpt]
    [app.common.geom.shapes.bounds :as gsb]
+   [app.common.pages.helpers :as cph]
    [app.common.spec :as us]
    [clojure.spec.alpha :as s]))
 
@@ -363,6 +364,7 @@
 
 (defn calc-overlay-position
   [interaction                        ;; interaction data
+   shape                              ;; Shape with the interaction
    objects                            ;; the objects tree
    relative-to-shape                  ;; the interaction position is realtive to this sape
    base-frame                         ;; the base frame of the current interaction
@@ -371,56 +373,68 @@
 
   (us/verify ::interaction interaction)
   (assert (has-overlay-opts interaction))
-  (if (nil? dest-frame)
-    (gpt/point 0 0)
-    (let [overlay-size           (gsb/get-object-bounds objects dest-frame)
-          base-frame-size        (:selrect base-frame)
-          relative-to-shape-size (:selrect relative-to-shape)
-          relative-to-adjusted-to-base-frame {:x (- (:x relative-to-shape-size) (:x base-frame-size))
-                                              :y (- (:y relative-to-shape-size) (:y base-frame-size))}
-          relative-to-is-auto?   (and (nil? (:position-relative-to interaction)) (not= :manual (:overlay-pos-type interaction)))
-          base-position          (if relative-to-is-auto?
-                                   {:x 0 :y 0}
-                                   {:x (+ (:x frame-offset)
-                                          (:x relative-to-adjusted-to-base-frame))
-                                    :y (+ (:y frame-offset)
-                                          (:y relative-to-adjusted-to-base-frame))})
-          overlay-position       (:overlay-position interaction)
-          overlay-position       (if (= (:type relative-to-shape) :frame)
-                                   overlay-position
-                                   {:x (- (:x overlay-position) (:x relative-to-adjusted-to-base-frame))
-                                    :y (- (:y overlay-position) (:y relative-to-adjusted-to-base-frame))})]
-      (case (:overlay-pos-type interaction)
-        :center
-        (gpt/point (+ (:x base-position) (/ (- (:width relative-to-shape-size) (:width overlay-size)) 2))
-                   (+ (:y base-position) (/ (- (:height relative-to-shape-size) (:height overlay-size)) 2)))
+  (let [
+        ;; When the interactive item is inside a nested frame we need to add to the offset the position
+        ;; of the parent-frame otherwise the position won't match
+        shape-frame (cph/get-frame objects shape)
 
-        :top-left
-        (gpt/point (:x base-position) (:y base-position))
+        frame-offset (if (or (not= :manual (:overlay-pos-type interaction))
+                             (nil? shape-frame)
+                             (cph/root-frame? shape-frame)
+                             (cph/root? shape-frame))
+                       frame-offset
+                       (gpt/add frame-offset (gpt/point shape-frame)))
+        ]
+    (if (nil? dest-frame)
+      (gpt/point 0 0)
+      (let [overlay-size           (gsb/get-object-bounds objects dest-frame)
+            base-frame-size        (:selrect base-frame)
+            relative-to-shape-size (:selrect relative-to-shape)
+            relative-to-adjusted-to-base-frame {:x (- (:x relative-to-shape-size) (:x base-frame-size))
+                                                :y (- (:y relative-to-shape-size) (:y base-frame-size))}
+            relative-to-is-auto?   (and (nil? (:position-relative-to interaction)) (not= :manual (:overlay-pos-type interaction)))
+            base-position          (if relative-to-is-auto?
+                                     {:x 0 :y 0}
+                                     {:x (+ (:x frame-offset)
+                                            (:x relative-to-adjusted-to-base-frame))
+                                      :y (+ (:y frame-offset)
+                                            (:y relative-to-adjusted-to-base-frame))})
+            overlay-position       (:overlay-position interaction)
+            overlay-position       (if (= (:type relative-to-shape) :frame)
+                                     overlay-position
+                                     {:x (- (:x overlay-position) (:x relative-to-adjusted-to-base-frame))
+                                      :y (- (:y overlay-position) (:y relative-to-adjusted-to-base-frame))})]
+        (case (:overlay-pos-type interaction)
+          :center
+          (gpt/point (+ (:x base-position) (/ (- (:width relative-to-shape-size) (:width overlay-size)) 2))
+                     (+ (:y base-position) (/ (- (:height relative-to-shape-size) (:height overlay-size)) 2)))
 
-        :top-right
-        (gpt/point (+ (:x base-position) (- (:width relative-to-shape-size) (:width overlay-size)))
-                   (:y base-position))
+          :top-left
+          (gpt/point (:x base-position) (:y base-position))
 
-        :top-center
-        (gpt/point (+ (:x base-position) (/ (- (:width relative-to-shape-size) (:width overlay-size)) 2))
-                   (:y base-position))
+          :top-right
+          (gpt/point (+ (:x base-position) (- (:width relative-to-shape-size) (:width overlay-size)))
+                     (:y base-position))
 
-        :bottom-left
-        (gpt/point (:x base-position)
-                   (+ (:y base-position) (- (:height relative-to-shape-size) (:height overlay-size))))
+          :top-center
+          (gpt/point (+ (:x base-position) (/ (- (:width relative-to-shape-size) (:width overlay-size)) 2))
+                     (:y base-position))
 
-        :bottom-right
-        (gpt/point (+ (:x base-position) (- (:width relative-to-shape-size) (:width overlay-size)))
-                   (+ (:y base-position) (- (:height relative-to-shape-size) (:height overlay-size))))
+          :bottom-left
+          (gpt/point (:x base-position)
+                     (+ (:y base-position) (- (:height relative-to-shape-size) (:height overlay-size))))
 
-        :bottom-center
-        (gpt/point (+ (:x base-position) (/ (- (:width relative-to-shape-size) (:width overlay-size)) 2))
-                   (+ (:y base-position) (- (:height relative-to-shape-size) (:height overlay-size))))
+          :bottom-right
+          (gpt/point (+ (:x base-position) (- (:width relative-to-shape-size) (:width overlay-size)))
+                     (+ (:y base-position) (- (:height relative-to-shape-size) (:height overlay-size))))
 
-        :manual
-        (gpt/point (+ (:x base-position) (:x overlay-position))
-                   (+ (:y base-position) (:y overlay-position)))))))
+          :bottom-center
+          (gpt/point (+ (:x base-position) (/ (- (:width relative-to-shape-size) (:width overlay-size)) 2))
+                     (+ (:y base-position) (- (:height relative-to-shape-size) (:height overlay-size))))
+
+          :manual
+          (gpt/point (+ (:x base-position) (:x overlay-position))
+                     (+ (:y base-position) (:y overlay-position))))))))
 
 (defn has-animation?
   [interaction]
diff --git a/common/test/common_tests/types_shape_interactions_test.cljc b/common/test/common_tests/types_shape_interactions_test.cljc
index b1bf12698..4411d86f1 100644
--- a/common/test/common_tests/types_shape_interactions_test.cljc
+++ b/common/test/common_tests/types_shape_interactions_test.cljc
@@ -324,49 +324,49 @@
         interaction-rect (ctsi/set-position-relative-to interaction (:id rect))]
     (t/testing "Overlay top-left relative to auto"
       (let [i2 (ctsi/set-overlay-pos-type interaction-auto :top-left base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 0))
         (t/is (= (:y overlay-pos) 0))))
 
     (t/testing "Overlay top-center relative to auto"
       (let [i2 (ctsi/set-overlay-pos-type interaction-auto :top-center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 35))
         (t/is (= (:y overlay-pos) 0))))
 
     (t/testing "Overlay top-right relative to auto"
       (let [i2 (ctsi/set-overlay-pos-type interaction-auto :top-right base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 70))
         (t/is (= (:y overlay-pos) 0))))
 
     (t/testing "Overlay bottom-left relative to auto"
       (let [i2 (ctsi/set-overlay-pos-type interaction-auto :bottom-left base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 0))
         (t/is (= (:y overlay-pos) 80))))
 
     (t/testing "Overlay bottom-center relative to auto"
       (let [i2 (ctsi/set-overlay-pos-type interaction-auto :bottom-center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 35))
         (t/is (= (:y overlay-pos) 80))))
 
     (t/testing "Overlay bottom-right relative to auto"
       (let [i2 (ctsi/set-overlay-pos-type interaction-auto :bottom-right base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 70))
         (t/is (= (:y overlay-pos) 80))))
 
     (t/testing "Overlay center relative to auto"
       (let [i2 (ctsi/set-overlay-pos-type interaction-auto :center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 35))
         (t/is (= (:y overlay-pos) 40))))
 
     (t/testing "Overlay manual relative to auto"
       (let [i2 (ctsi/set-overlay-pos-type interaction-auto :center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 35))
         (t/is (= (:y overlay-pos) 40))))
 
@@ -374,49 +374,49 @@
       (let [i2 (-> interaction-auto
                    (ctsi/set-overlay-pos-type :manual base-frame objects)
                    (ctsi/set-overlay-position (gpt/point 12 62)))
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 17))
         (t/is (= (:y overlay-pos) 67))))
 
     (t/testing "Overlay top-left relative to base-frame"
       (let [i2 (ctsi/set-overlay-pos-type interaction-base-frame :top-left base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 5))
         (t/is (= (:y overlay-pos) 5))))
 
     (t/testing "Overlay top-center relative to base-frame"
       (let [i2 (ctsi/set-overlay-pos-type interaction-base-frame :top-center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 40))
         (t/is (= (:y overlay-pos) 5))))
 
     (t/testing "Overlay top-right relative to base-frame"
       (let [i2 (ctsi/set-overlay-pos-type interaction-base-frame :top-right base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 75))
         (t/is (= (:y overlay-pos) 5))))
 
     (t/testing "Overlay bottom-left relative to base-frame"
       (let [i2 (ctsi/set-overlay-pos-type interaction-base-frame :bottom-left base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 5))
         (t/is (= (:y overlay-pos) 85))))
 
     (t/testing "Overlay bottom-center relative to base-frame"
       (let [i2 (ctsi/set-overlay-pos-type interaction-base-frame :bottom-center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 40))
         (t/is (= (:y overlay-pos) 85))))
 
     (t/testing "Overlay bottom-right relative to base-frame"
       (let [i2 (ctsi/set-overlay-pos-type interaction-base-frame :bottom-right base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 75))
         (t/is (= (:y overlay-pos) 85))))
 
     (t/testing "Overlay center relative to base-frame"
       (let [i2 (ctsi/set-overlay-pos-type interaction-base-frame :center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 40))
         (t/is (= (:y overlay-pos) 45))))
 
@@ -424,49 +424,49 @@
       (let [i2 (-> interaction-base-frame
                    (ctsi/set-overlay-pos-type :manual base-frame objects)
                    (ctsi/set-overlay-position (gpt/point 12 62)))
-            overlay-pos (ctsi/calc-overlay-position i2 objects base-frame base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects base-frame base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 17))
         (t/is (= (:y overlay-pos) 67))))
 
     (t/testing "Overlay top-left relative to popup"
       (let [i2 (ctsi/set-overlay-pos-type interaction-popup :top-left base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects popup base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects popup base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 15))
         (t/is (= (:y overlay-pos) 15))))
 
     (t/testing "Overlay top-center relative to popup"
       (let [i2 (ctsi/set-overlay-pos-type interaction-popup :top-center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects popup base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects popup base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 25))
         (t/is (= (:y overlay-pos) 15))))
 
     (t/testing "Overlay top-right relative to popup"
       (let [i2 (ctsi/set-overlay-pos-type interaction-popup :top-right base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects popup base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects popup base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 35))
         (t/is (= (:y overlay-pos) 15))))
 
     (t/testing "Overlay bottom-left relative to popup"
       (let [i2 (ctsi/set-overlay-pos-type interaction-popup :bottom-left base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects popup base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects popup base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 15))
         (t/is (= (:y overlay-pos) 45))))
 
     (t/testing "Overlay bottom-center relative to popup"
       (let [i2 (ctsi/set-overlay-pos-type interaction-popup :bottom-center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects popup base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects popup base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 25))
         (t/is (= (:y overlay-pos) 45))))
 
     (t/testing "Overlay bottom-right relative to popup"
       (let [i2 (ctsi/set-overlay-pos-type interaction-popup :bottom-right base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects popup base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects popup base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 35))
         (t/is (= (:y overlay-pos) 45))))
 
     (t/testing "Overlay center relative to popup"
       (let [i2 (ctsi/set-overlay-pos-type interaction-popup :center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects popup base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects popup base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 25))
         (t/is (= (:y overlay-pos) 30))))
 
@@ -474,49 +474,49 @@
       (let [i2 (-> interaction-popup
                    (ctsi/set-overlay-pos-type :manual base-frame objects)
                    (ctsi/set-overlay-position (gpt/point 12 62)))
-            overlay-pos (ctsi/calc-overlay-position i2 objects popup base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects popup base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 27))
         (t/is (= (:y overlay-pos) 77))))
 
     (t/testing "Overlay top-left relative to popup"
       (let [i2 (ctsi/set-overlay-pos-type interaction-popup :top-left base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects popup base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects popup base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 15))
         (t/is (= (:y overlay-pos) 15))))
 
     (t/testing "Overlay top-center relative to rect"
       (let [i2 (ctsi/set-overlay-pos-type interaction-rect :top-center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects rect base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects rect base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 25))
         (t/is (= (:y overlay-pos) 15))))
 
     (t/testing "Overlay top-right relative to rect"
       (let [i2 (ctsi/set-overlay-pos-type interaction-rect :top-right base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects rect base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects rect base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 35))
         (t/is (= (:y overlay-pos) 15))))
 
     (t/testing "Overlay bottom-left relative to rect"
       (let [i2 (ctsi/set-overlay-pos-type interaction-rect :bottom-left base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects rect base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects rect base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 15))
         (t/is (= (:y overlay-pos) 45))))
 
     (t/testing "Overlay bottom-center relative to rect"
       (let [i2 (ctsi/set-overlay-pos-type interaction-rect :bottom-center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects rect base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects rect base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 25))
         (t/is (= (:y overlay-pos) 45))))
 
     (t/testing "Overlay bottom-right relative to rect"
       (let [i2 (ctsi/set-overlay-pos-type interaction-rect :bottom-right base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects rect base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects rect base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 35))
         (t/is (= (:y overlay-pos) 45))))
 
     (t/testing "Overlay center relative to rect"
       (let [i2 (ctsi/set-overlay-pos-type interaction-rect :center base-frame objects)
-            overlay-pos (ctsi/calc-overlay-position i2 objects rect base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects rect base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 25))
         (t/is (= (:y overlay-pos) 30))))
 
@@ -524,7 +524,7 @@
       (let [i2 (-> interaction-rect
                    (ctsi/set-overlay-pos-type :manual base-frame objects)
                    (ctsi/set-overlay-position (gpt/point 12 62)))
-            overlay-pos (ctsi/calc-overlay-position i2 objects rect base-frame overlay-frame frame-offset)]
+            overlay-pos (ctsi/calc-overlay-position i2 rect objects rect base-frame overlay-frame frame-offset)]
         (t/is (= (:x overlay-pos) 17))
         (t/is (= (:y overlay-pos) 67))))))
 
diff --git a/frontend/src/app/main/ui/viewer/shapes.cljs b/frontend/src/app/main/ui/viewer/shapes.cljs
index 99c59c22c..619e0a159 100644
--- a/frontend/src/app/main/ui/viewer/shapes.cljs
+++ b/frontend/src/app/main/ui/viewer/shapes.cljs
@@ -7,7 +7,6 @@
 (ns app.main.ui.viewer.shapes
   "The main container for a frame in viewer mode"
   (:require
-   [app.common.geom.point :as gpt]
    [app.common.geom.shapes :as gsh]
    [app.common.pages.helpers :as cph]
    [app.common.types.shape.interactions :as ctsi]
@@ -48,87 +47,82 @@
 (defn- activate-interaction
   [interaction shape base-frame frame-offset objects overlays]
 
-  (let [;; When the interactive item is inside a nested frame we need to add to the offset the position
-        ;; of the parent-frame otherwise the position won't match
-        shape-frame (cph/get-frame objects shape)
+  (case (:action-type interaction)
+    :navigate
+    (when-let [frame-id (:destination interaction)]
+      (let [viewer-section (dom/get-element "viewer-section")
+            scroll (if (:preserve-scroll interaction)
+                     (dom/get-scroll-pos viewer-section)
+                     0)]
+        (st/emit! (dv/set-nav-scroll scroll)
+                  (dv/go-to-frame frame-id (:animation interaction)))))
 
-        frame-offset (if (or (cph/root-frame? shape-frame) (cph/root? shape-frame))
-                       frame-offset
-                       (gpt/add frame-offset (gpt/point shape-frame)))]
-    (case (:action-type interaction)
-      :navigate
-      (when-let [frame-id (:destination interaction)]
-        (let [viewer-section (dom/get-element "viewer-section")
-              scroll (if (:preserve-scroll interaction)
-                       (dom/get-scroll-pos viewer-section)
-                       0)]
-          (st/emit! (dv/set-nav-scroll scroll)
-                    (dv/go-to-frame frame-id (:animation interaction)))))
+    :open-overlay
+    (let [dest-frame-id              (:destination interaction)
+          viewer-objects             (deref (refs/get-viewer-objects))
+          dest-frame                 (get viewer-objects dest-frame-id)
+          relative-to-id             (if (= :manual (:overlay-pos-type interaction))
+                                       (:id shape) ;; manual interactions are allways from "self"
+                                       (:position-relative-to interaction))
+          relative-to-shape          (or (get objects relative-to-id) base-frame)
+          close-click-outside        (:close-click-outside interaction)
+          background-overlay         (:background-overlay interaction)
+          overlays-ids               (set (map :id overlays))
+          relative-to-base-frame     (find-relative-to-base-frame relative-to-shape objects overlays-ids base-frame)
+          position                   (ctsi/calc-overlay-position interaction
+                                                                 shape
+                                                                 viewer-objects
+                                                                 relative-to-shape
+                                                                 relative-to-base-frame
+                                                                 dest-frame
+                                                                 frame-offset)]
+      (when dest-frame-id
+        (st/emit! (dv/open-overlay dest-frame-id
+                                   position
+                                   close-click-outside
+                                   background-overlay
+                                   (:animation interaction)))))
 
-      :open-overlay
-      (let [dest-frame-id              (:destination interaction)
-            viewer-objects             (deref (refs/get-viewer-objects))
-            dest-frame                 (get viewer-objects dest-frame-id)
-            relative-to-id             (if (= :manual (:overlay-pos-type interaction))
-                                         (:id shape) ;; manual interactions are allways from "self"
-                                         (:position-relative-to interaction))
-            relative-to-shape          (or (get objects relative-to-id) base-frame)
-            close-click-outside        (:close-click-outside interaction)
-            background-overlay         (:background-overlay interaction)
-            overlays-ids               (set (map :id overlays))
-            relative-to-base-frame     (find-relative-to-base-frame relative-to-shape objects overlays-ids base-frame)
-            position                   (ctsi/calc-overlay-position interaction
-                                                                   viewer-objects
-                                                                   relative-to-shape
-                                                                   relative-to-base-frame
-                                                                   dest-frame
-                                                                   frame-offset)]
-        (when dest-frame-id
-          (st/emit! (dv/open-overlay dest-frame-id
+    :toggle-overlay
+    (let [frame-id                   (:destination interaction)
+          dest-frame                 (get objects frame-id)
+          relative-to-id             (if (= :manual (:overlay-pos-type interaction))
+                                       (:id shape) ;; manual interactions are allways from "self"
+                                       (:position-relative-to interaction))
+          relative-to-shape          (or (get objects relative-to-id) base-frame)
+          overlays-ids               (set (map :id overlays))
+          relative-to-base-frame     (find-relative-to-base-frame relative-to-shape objects overlays-ids base-frame)
+          position                   (ctsi/calc-overlay-position interaction
+                                                                 shape
+                                                                 objects
+                                                                 relative-to-shape
+                                                                 relative-to-base-frame
+                                                                 dest-frame
+                                                                 frame-offset)
+
+          close-click-outside        (:close-click-outside interaction)
+          background-overlay         (:background-overlay interaction)]
+      (when frame-id
+        (st/emit! (dv/toggle-overlay frame-id
                                      position
                                      close-click-outside
                                      background-overlay
                                      (:animation interaction)))))
 
-      :toggle-overlay
-      (let [frame-id                   (:destination interaction)
-            dest-frame                 (get objects frame-id)
-            relative-to-id             (if (= :manual (:overlay-pos-type interaction))
-                                         (:id shape) ;; manual interactions are allways from "self"
-                                         (:position-relative-to interaction))
-            relative-to-shape          (or (get objects relative-to-id) base-frame)
-            overlays-ids               (set (map :id overlays))
-            relative-to-base-frame     (find-relative-to-base-frame relative-to-shape objects overlays-ids base-frame)
-            position                   (ctsi/calc-overlay-position interaction
-                                                                   objects
-                                                                   relative-to-shape
-                                                                   relative-to-base-frame
-                                                                   dest-frame
-                                                                   frame-offset)
+    :close-overlay
+    (let [frame-id (or (:destination interaction)
+                       (if (= (:type shape) :frame)
+                         (:id shape)
+                         (:frame-id shape)))]
+      (st/emit! (dv/close-overlay frame-id (:animation interaction))))
 
-            close-click-outside        (:close-click-outside interaction)
-            background-overlay         (:background-overlay interaction)]
-        (when frame-id
-          (st/emit! (dv/toggle-overlay frame-id
-                                       position
-                                       close-click-outside
-                                       background-overlay
-                                       (:animation interaction)))))
+    :prev-screen
+    (st/emit! (rt/nav-back-local))
 
-      :close-overlay
-      (let [frame-id (or (:destination interaction)
-                         (if (= (:type shape) :frame)
-                           (:id shape)
-                           (:frame-id shape)))]
-        (st/emit! (dv/close-overlay frame-id (:animation interaction))))
+    :open-url
+    (st/emit! (dom/open-new-window (:url interaction)))
 
-      :prev-screen
-      (st/emit! (rt/nav-back-local))
-
-      :open-url
-      (st/emit! (dom/open-new-window (:url interaction)))
-
-      nil)))
+    nil))
 
 ;; Perform the opposite action of an interaction, if possible
 (defn- deactivate-interaction
@@ -165,6 +159,7 @@
           overlays-ids               (set (map :id overlays))
           relative-to-base-frame     (find-relative-to-base-frame relative-to-shape objects overlays-ids base-frame)
           position                   (ctsi/calc-overlay-position interaction
+                                                                 shape
                                                                  objects
                                                                  relative-to-shape
                                                                  relative-to-base-frame