diff --git a/frontend/src/app/main/data/workspace/selection.cljs b/frontend/src/app/main/data/workspace/selection.cljs
index 2c2763f75..6dc81868a 100644
--- a/frontend/src/app/main/data/workspace/selection.cljs
+++ b/frontend/src/app/main/data/workspace/selection.cljs
@@ -448,7 +448,7 @@
                                    :use-for-thumbnail?)
 
                            (cond->
-                             (or group? bool?)
+                             (or frame? group? bool?)
                              (assoc :shapes []))
 
                            (gsh/move delta)
diff --git a/frontend/src/app/main/ui/components/dropdown.cljs b/frontend/src/app/main/ui/components/dropdown.cljs
index 8be2f498d..f27662421 100644
--- a/frontend/src/app/main/ui/components/dropdown.cljs
+++ b/frontend/src/app/main/ui/components/dropdown.cljs
@@ -10,6 +10,7 @@
    [app.util.dom :as dom]
    [app.util.globals :as globals]
    [app.util.keyboard :as kbd]
+   [app.util.timers :as tm]
    [goog.events :as events]
    [goog.object :as gobj]
    [rumext.v2 :as mf])
@@ -18,24 +19,26 @@
 (mf/defc dropdown'
   {::mf/wrap-props false}
   [props]
-  (let [children (gobj/get props "children")
-        on-close (gobj/get props "on-close")
-        ref      (gobj/get props "container")
+  (let [children      (gobj/get props "children")
+        on-close      (gobj/get props "on-close")
+        container-ref (gobj/get props "container")
+        listening-ref (mf/use-ref nil)
 
         on-click
         (fn [event]
-          (let [target (dom/get-target event)
+          (when (mf/ref-val listening-ref)
+            (let [target (dom/get-target event)
 
-                ;; MacOS ctrl+click sends two events: context-menu and click.
-                ;; In order to not have two handlings we ignore ctrl+click for this platform
-                mac-ctrl-click? (and (cfg/check-platform? :macos) (kbd/ctrl? event))]
-            (when (and (not mac-ctrl-click?)
-                       (not (.-data-no-close ^js target)))
-              (if ref
-                (let [parent (mf/ref-val ref)]
-                  (when-not (or (not parent) (.contains parent target))
-                    (on-close)))
-                (on-close)))))
+                  ;; MacOS ctrl+click sends two events: context-menu and click.
+                  ;; In order to not have two handlings we ignore ctrl+click for this platform
+                  mac-ctrl-click? (and (cfg/check-platform? :macos) (kbd/ctrl? event))]
+              (when (and (not mac-ctrl-click?)
+                         (not (.-data-no-close ^js target)))
+                (if container-ref
+                  (let [parent (mf/ref-val container-ref)]
+                    (when-not (or (not parent) (.contains parent target))
+                      (on-close)))
+                  (on-close))))))
 
         on-keyup
         (fn [event]
@@ -47,8 +50,8 @@
           (let [keys [(events/listen globals/document EventType.CLICK on-click)
                       (events/listen globals/document EventType.CONTEXTMENU on-click)
                       (events/listen globals/document EventType.KEYUP on-keyup)]]
-            #(doseq [key keys]
-               (events/unlistenByKey key))))]
+            (tm/schedule #(mf/set-ref-val! listening-ref true))
+            #(run! events/unlistenByKey keys)))]
 
     (mf/use-effect on-mount)
     children))
diff --git a/frontend/src/app/main/ui/viewer/inspect/render.cljs b/frontend/src/app/main/ui/viewer/inspect/render.cljs
index a3cf6cc4d..a2d944bfa 100644
--- a/frontend/src/app/main/ui/viewer/inspect/render.cljs
+++ b/frontend/src/app/main/ui/viewer/inspect/render.cljs
@@ -170,7 +170,9 @@
             (mf/use-memo (mf/deps objects)
                          #(svg-raw-container-factory objects))]
         (when (and shape (not (:hidden shape)))
-          (let [shape (gsh/translate-to-frame shape frame)
+          (let [shape (if frame
+                        (gsh/translate-to-frame shape frame)
+                        shape)
                 opts #js {:shape shape
                           :frame frame}]
             (case (:type shape)
diff --git a/frontend/src/app/main/ui/workspace/viewport/actions.cljs b/frontend/src/app/main/ui/workspace/viewport/actions.cljs
index 370285522..4535a030d 100644
--- a/frontend/src/app/main/ui/workspace/viewport/actions.cljs
+++ b/frontend/src/app/main/ui/workspace/viewport/actions.cljs
@@ -56,7 +56,8 @@
          (.setPointerCapture target (.-pointerId bevent))))
 
      (when (or (dom/class? (dom/get-target bevent) "viewport-controls")
-               (dom/child? (dom/get-target bevent) (dom/query ".viewport-controls")))
+               (dom/class? (dom/get-target bevent) "viewport-selrect")
+               (dom/child? (dom/get-target bevent) (dom/query ".grid-layout-editor")))
 
        (dom/stop-propagation bevent)
 
@@ -161,7 +162,7 @@
    (fn [event]
      (when (and (nil? selrect)
                 (or (dom/class? (dom/get-target event) "viewport-controls")
-                    (dom/child? (dom/get-target event) (dom/query ".viewport-controls"))
+                    (dom/child? (dom/get-target event) (dom/query ".grid-layout-editor"))
                     (dom/class? (dom/get-target event) "viewport-selrect")))
        (let [ctrl? (kbd/ctrl? event)
              shift? (kbd/shift? event)
@@ -236,7 +237,7 @@
      (dom/prevent-default event)
      (when-not workspace-read-only?
        (when (or (dom/class? (dom/get-target event) "viewport-controls")
-                 (dom/child? (dom/get-target event) (dom/query ".viewport-controls"))
+                 (dom/child? (dom/get-target event) (dom/query ".grid-layout-editor"))
                  (dom/class? (dom/get-target event) "viewport-selrect")
                  workspace-read-only?)
          (let [position (dom/get-client-position event)]