       (rx/subscribe stream on-move nil on-end))))
 
 (mx/defc path-edition-selection-handlers
-  [{:keys [id points] :as shape}]
+  [{:keys [id points] :as shape} zoom]
   (letfn [(on-mouse-down [index event]
             (dom/stop-propagation event)
             (rlocks/acquire! :shape/resize)
             (start-path-edition id index))]
     [:g.controls
      (for [[index {:keys [x y]}] (map-indexed vector points)]
-       [:circle {:cx x :cy y :r 6
+       [:circle {:cx x :cy y
+                 :r (/ 6.0 zoom)
                  :on-mouse-down (partial on-mouse-down index)
                  :fill "#31e6e0"
                  :stroke "#28c4d4"

       [:rect.main {:x x :y y
                    :width width
                    :height height
                    :stroke-dasharray "5,5"
                    :style {:stroke "#333"
                            :fill "transparent"
                            :stroke-opacity "1"}}]
       [:circle.top
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :top %)
                :cx (+ x (/ width 2))
                :cy (- y 2)})]
       [:circle.right
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :right %)
                :cy (+ y (/ height 2))
                :cx (+ x width 1)})]
       [:circle.bottom
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :bottom %)
                :cx (+ x (/ width 2))
                :cy (+ y height 2)})]
       [:circle.left
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :left %)
                :cy (+ y (/ height 2))
                :cx (- x 3)})]
       [:circle.top-left
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :top-left %)
                :cx x
                :cy y})]
       [:circle.top-right
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :top-right %)
                :cx (+ x width)
                :cy y})]
       [:circle.bottom-left
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :bottom-left %)
                :cx x
                :cy (+ y height)})]
       [:circle.bottom-right
        (merge +circle-props+
               {:on-mouse-down #(on-mouse-down :bottom-right %)
                :cx (+ x width)
                :cy (+ y height)})]])))


      nil

      (> shapes-num 1)
      (multiple-selection-handlers shapes zoom)

      :else
      (cond
        (= :path (:type shape))
        (if (= @edition-ref (:id shape))
          (path-edition-selection-handlers shape zoom)
          (single-not-editable-selection-handlers shape zoom))

        (= :text (:type shape))
        (if (= @edition-ref (:id shape))
          (single-not-editable-selection-handlers shape zoom)
          (single-selection-handlers (first shapes) zoom))

        (= :group (:type shape))
        (single-not-editable-selection-handlers shape zoom)

        :else
        (single-selection-handlers (first shapes) zoom)))))
