diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp
index 183dfccb1..1fa3b2bdd 100644
--- a/src/slic3r/GUI/GLCanvas3D.cpp
+++ b/src/slic3r/GUI/GLCanvas3D.cpp
@@ -1164,100 +1164,6 @@ void GLCanvas3D::LegendTexture::render(const GLCanvas3D& canvas) const
     }
 }
 
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-void GLCanvas3D::RectangleSelection::render(const GLCanvas3D& canvas) const
-{
-    if (status == Off)
-        return;
-
-#if 1
-    float zoom = canvas.get_camera().zoom;
-    float inv_zoom = (zoom != 0.0f) ? 1.0f / zoom : 0.0f;
-
-    Size cnv_size = canvas.get_canvas_size();
-    float cnv_half_width = 0.5f * (float)cnv_size.get_width();
-    float cnv_half_height = 0.5f * (float)cnv_size.get_height();
-    if ((cnv_half_width == 0.0f) || (cnv_half_height == 0.0f))
-        return;
-
-    Vec2d start(start_corner(0) - cnv_half_width, cnv_half_height - start_corner(1));
-    Vec2d end(end_corner(0) - cnv_half_width, cnv_half_height - end_corner(1));
-
-    float left = (float)std::min(start(0), end(0)) * inv_zoom;
-    float top = (float)std::max(start(1), end(1)) * inv_zoom;
-    float right = (float)std::max(start(0), end(0)) * inv_zoom;
-    float bottom = (float)std::min(start(1), end(1)) * inv_zoom;
-
-    glsafe(::glLineWidth(1.5f));
-    float color[3];
-    color[0] = (status == Select) ? 0.3f : 1.0f;
-    color[1] = (status == Select) ? 1.0f : 0.3f;
-    color[2] = 0.3f;
-    glsafe(::glColor3fv(color));
-
-    glsafe(::glDisable(GL_DEPTH_TEST));
-
-    glsafe(::glPushMatrix());
-    glsafe(::glLoadIdentity());
-
-    glsafe(::glPushAttrib(GL_ENABLE_BIT));
-    glsafe(::glLineStipple(4, 0xAAAA));
-    glsafe(::glEnable(GL_LINE_STIPPLE));
-
-    ::glBegin(GL_LINE_LOOP);
-    ::glVertex2f((GLfloat)left, (GLfloat)bottom);
-    ::glVertex2f((GLfloat)right, (GLfloat)bottom);
-    ::glVertex2f((GLfloat)right, (GLfloat)top);
-    ::glVertex2f((GLfloat)left, (GLfloat)top);
-    glsafe(::glEnd());
-
-    glsafe(::glPopAttrib());
-
-    glsafe(::glPopMatrix());
-#else
-    glsafe(::glLineWidth(1.5f));
-    float render_color[3] = { 0.f, 1.f, 0.f };
-    if (status == Deselect) {
-        render_color[0] = 1.f;
-        render_color[1] = 0.3f;
-        render_color[2] = 0.3f;
-    }
-    glsafe(::glColor3fv(render_color));
-
-    glsafe(::glPushAttrib(GL_TRANSFORM_BIT));   // remember current MatrixMode
-
-    glsafe(::glMatrixMode(GL_MODELVIEW));       // cache modelview matrix and set to identity
-    glsafe(::glPushMatrix());
-    glsafe(::glLoadIdentity());
-
-    glsafe(::glMatrixMode(GL_PROJECTION));      // cache projection matrix and set to identity
-    glsafe(::glPushMatrix());
-    glsafe(::glLoadIdentity());
-
-    Size cnv_size = canvas.get_canvas_size();
-    glsafe(::glOrtho(0.f, cnv_size.get_width(), cnv_size.get_height(), 0.f, -1.f, 1.f)); // set projection matrix so that world coords = window coords
-
-    // render the selection  rectangle (window coordinates):
-    glsafe(::glPushAttrib(GL_ENABLE_BIT));
-    glsafe(::glLineStipple(4, 0xAAAA));
-    glsafe(::glEnable(GL_LINE_STIPPLE));
-
-    ::glBegin(GL_LINE_LOOP);
-    ::glVertex3f((GLfloat)start_corner(0), (GLfloat)start_corner(1), (GLfloat)0.5f);
-    ::glVertex3f((GLfloat)end_corner(0), (GLfloat)start_corner(1), (GLfloat)0.5f);
-    ::glVertex3f((GLfloat)end_corner(0), (GLfloat)end_corner(1), (GLfloat)0.5f);
-    ::glVertex3f((GLfloat)start_corner(0), (GLfloat)end_corner(1), (GLfloat)0.5f);
-    glsafe(::glEnd());
-    glsafe(::glPopAttrib());
-
-    glsafe(::glPopMatrix());                // restore former projection matrix
-    glsafe(::glMatrixMode(GL_MODELVIEW));
-    glsafe(::glPopMatrix());                // restore former modelview matrix
-    glsafe(::glPopAttrib());                // restore former MatrixMode
-#endif
-}
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-
 wxDEFINE_EVENT(EVT_GLCANVAS_INIT, SimpleEvent);
 wxDEFINE_EVENT(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS, SimpleEvent);
 wxDEFINE_EVENT(EVT_GLCANVAS_OBJECT_SELECT, SimpleEvent);
@@ -2460,22 +2366,18 @@ void GLCanvas3D::on_key(wxKeyEvent& evt)
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                 else if (keyCode == WXK_SHIFT)
                 {
-//                    std::cout << "Shift up" << std::endl;
                     if (m_rectangle_selection.is_active())
                     {
-//                        std::cout << ">>>>>>>> STOP rectangle selection" << std::endl;
-                        m_rectangle_selection.status = RectangleSelection::Off;
+                        m_rectangle_selection.stop_dragging();
                         m_dirty = true;
                     }
                     set_cursor(Standard);
                 }
                 else if (keyCode == WXK_ALT)
                 {
-//                    std::cout << "Alt up" << std::endl;
                     if (m_rectangle_selection.is_active())
                     {
-//                        std::cout << ">>>>>>>> STOP rectangle deselection" << std::endl;
-                        m_rectangle_selection.status = RectangleSelection::Off;
+                        m_rectangle_selection.stop_dragging();
                         m_dirty = true;
                     }
                     set_cursor(Standard);
@@ -2487,13 +2389,13 @@ void GLCanvas3D::on_key(wxKeyEvent& evt)
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                 if (keyCode == WXK_SHIFT)
                 {
-//                    std::cout << "Shift down" << std::endl;
-                    set_cursor(Cross);
+                    if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports))
+                        set_cursor(Cross);
                 }
                 else if (keyCode == WXK_ALT)
                 {
-//                    std::cout << "Alt down" << std::endl;
-                    set_cursor(Cross);
+                    if (m_picking_enabled && (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports))
+                        set_cursor(Cross);
                 }
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
             }
@@ -2753,13 +2655,13 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
             }
         }
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-        else if (evt.LeftDown() && (evt.ShiftDown() || evt.AltDown()))
+        else if (evt.LeftDown() && (evt.ShiftDown() || evt.AltDown()) && m_picking_enabled)
         {
-            m_rectangle_selection.start_corner = m_mouse.position;
-            m_rectangle_selection.end_corner = m_mouse.position;
-            m_rectangle_selection.status = evt.ShiftDown() ? RectangleSelection::Select : RectangleSelection::Deselect;
-//            std::cout << ">>>>>>>> START rectangle" << (evt.ShiftDown() ? " selection" : " deselection") << " -> start: " << to_string(m_rectangle_selection.start_corner) << " - end: " << to_string(m_rectangle_selection.end_corner) << std::endl;
-            m_dirty = true;
+            if (m_gizmos.get_current_type() != GLGizmosManager::SlaSupports)
+            {
+                m_rectangle_selection.start_dragging(m_mouse.position, evt.ShiftDown() ? GLSelectionRectangle::Select : GLSelectionRectangle::Deselect);
+                m_dirty = true;
+            }
         }
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         else
@@ -2872,9 +2774,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     else if (evt.Dragging() && evt.LeftIsDown() && m_rectangle_selection.is_active())
     {
-        m_mouse.position = pos.cast<double>();
-        m_rectangle_selection.end_corner = m_mouse.position;
-//        std::cout << "start: " << to_string(m_rectangle_selection.start_corner) << " - end: " << to_string(m_rectangle_selection.end_corner) << std::endl;
+        m_rectangle_selection.dragging(pos.cast<double>());
         m_dirty = true;
     }
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ -2936,8 +2836,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt)
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         else if (evt.LeftUp() && m_rectangle_selection.is_active())
         {
-//            std::cout << ">>>>>>>> STOP rectangle" << ((m_rectangle_selection.status == RectangleSelection::Select) ? " selection" : " deselection") << std::endl;
-            m_rectangle_selection.status = RectangleSelection::Off;
+            m_rectangle_selection.stop_dragging();
             m_dirty = true;
         }
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ -3749,9 +3648,14 @@ void GLCanvas3D::_refresh_if_shown_on_screen()
 
 void GLCanvas3D::_picking_pass() const
 {
-    const Vec2d& pos = m_mouse.position;
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+//    const Vec2d& pos = m_mouse.position;
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
-    if (m_picking_enabled && !m_mouse.dragging && (pos != Vec2d(DBL_MAX, DBL_MAX)))
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+    if (m_picking_enabled && !m_mouse.dragging && (m_mouse.position != Vec2d(DBL_MAX, DBL_MAX)))
+//    if (m_picking_enabled && !m_mouse.dragging && (pos != Vec2d(DBL_MAX, DBL_MAX)))
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     {
         // Render the object for picking.
         // FIXME This cannot possibly work in a multi - sampled context as the color gets mangled by the anti - aliasing.
@@ -3783,10 +3687,16 @@ void GLCanvas3D::_picking_pass() const
 
         GLubyte color[4] = { 0, 0, 0, 0 };
         const Size& cnv_size = get_canvas_size();
-        bool inside = (0 <= pos(0)) && (pos(0) < cnv_size.get_width()) && (0 <= pos(1)) && (pos(1) < cnv_size.get_height());
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+        bool inside = (0 <= m_mouse.position(0)) && (m_mouse.position(0) < cnv_size.get_width()) && (0 <= m_mouse.position(1)) && (m_mouse.position(1) < cnv_size.get_height());
+//        bool inside = (0 <= pos(0)) && (pos(0) < cnv_size.get_width()) && (0 <= pos(1)) && (pos(1) < cnv_size.get_height());
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         if (inside)
         {
-            glsafe(::glReadPixels(pos(0), cnv_size.get_height() - pos(1) - 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void*)color));
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+            glsafe(::glReadPixels(m_mouse.position(0), cnv_size.get_height() - m_mouse.position(1) - 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void*)color));
+//            glsafe(::glReadPixels(pos(0), cnv_size.get_height() - pos(1) - 1, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, (void*)color));
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
             volume_id = color[0] + color[1] * 256 + color[2] * 256 * 256;
         }
         if ((0 <= volume_id) && (volume_id < (int)m_volumes.volumes.size()))
@@ -3807,6 +3717,9 @@ void GLCanvas3D::_picking_pass() const
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 void GLCanvas3D::_rectangular_selection_picking_pass() const
 {
+    if (m_picking_enabled)
+    {
+    }
 }
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp
index 4112c8ec6..647e24d7c 100644
--- a/src/slic3r/GUI/GLCanvas3D.hpp
+++ b/src/slic3r/GUI/GLCanvas3D.hpp
@@ -402,24 +402,6 @@ class GLCanvas3D
 
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 public:
-    struct RectangleSelection
-    {
-        enum EStatus
-        {
-            Off,
-            Select,
-            Deselect
-        };
-
-        EStatus status;
-        Vec2d start_corner;
-        Vec2d end_corner;
-
-        RectangleSelection() : status(Off), start_corner(Vec2d::Zero()), end_corner(Vec2d::Zero()) {}
-        bool is_active() const { return status != Off; }
-        void render(const GLCanvas3D& canvas) const;
-    };
-
     enum ECursorType : unsigned char
     {
         Standard,
@@ -474,7 +456,7 @@ private:
     bool m_tab_down;
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     ECursorType m_cursor_type;
-    RectangleSelection m_rectangle_selection;
+    GLSelectionRectangle m_rectangle_selection;
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
     // Following variable is obsolete and it should be safe to remove it.
diff --git a/src/slic3r/GUI/GLSelectionRectangle.cpp b/src/slic3r/GUI/GLSelectionRectangle.cpp
index a908d13ec..08bc3fb20 100644
--- a/src/slic3r/GUI/GLSelectionRectangle.cpp
+++ b/src/slic3r/GUI/GLSelectionRectangle.cpp
@@ -1,55 +1,57 @@
 #include "GLSelectionRectangle.hpp"
 #include "Camera.hpp"
 #include "3DScene.hpp"
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+#include "GLCanvas3D.hpp"
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
 #include <GL/glew.h>
 
 namespace Slic3r {
 namespace GUI {
 
-void GLSelectionRectangle::start_dragging(const Vec2d& mouse_position, float width, float height, EState status)
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+void GLSelectionRectangle::start_dragging(const Vec2d& mouse_position, EState status)
 {
-    if (is_active() || status==Off)
+    if (is_active() || (status == Off))
         return;
 
-    m_width = width;
-    m_height = height;
     m_status = status;
     m_start_corner = mouse_position;
     m_end_corner = mouse_position;
 }
 
-
-
 void GLSelectionRectangle::dragging(const Vec2d& mouse_position)
 {
-    if (is_active())
-        m_end_corner = mouse_position;
+    if (!is_active())
+        return;
+    
+    m_end_corner = mouse_position;
 }
 
-
-
-std::vector<unsigned int> GLSelectionRectangle::end_dragging(const Camera& camera, const std::vector<Vec3d>& points)
+std::vector<unsigned int> GLSelectionRectangle::stop_dragging(const GLCanvas3D& canvas, const std::vector<Vec3d>& points)
 {
-    if (!is_active())
-        return std::vector<unsigned int>();
-
-    m_status = Off;
     std::vector<unsigned int> out;
 
+    if (!is_active())
+        return out;
+
+    m_status = Off;
+
+    const Camera& camera = canvas.get_camera();
     const std::array<int, 4>& viewport = camera.get_viewport();
     const Transform3d& modelview_matrix = camera.get_view_matrix();
     const Transform3d& projection_matrix = camera.get_projection_matrix();
 
     // bounding box created from the rectangle corners - will take care of order of the corners
-    BoundingBox rectangle(Points{Point(m_start_corner.cast<int>()), Point(m_end_corner.cast<int>())});
+    BoundingBox rectangle(Points{ Point(m_start_corner.cast<int>()), Point(m_end_corner.cast<int>()) });
 
     // Iterate over all points and determine whether they're in the rectangle.
-    for (unsigned int i=0; i<points.size(); ++i) {
+    for (unsigned int i = 0; i<points.size(); ++i) {
         const Vec3d& point = points[i];
         GLdouble out_x, out_y, out_z;
         ::gluProject((GLdouble)point(0), (GLdouble)point(1), (GLdouble)point(2), (GLdouble*)modelview_matrix.data(), (GLdouble*)projection_matrix.data(), (GLint*)viewport.data(), &out_x, &out_y, &out_z);
-        out_y = m_height - out_y;
+        out_y = canvas.get_canvas_size().get_height() - out_y;
 
         if (rectangle.contains(Point(out_x, out_y)))
             out.push_back(i);
@@ -58,59 +60,163 @@ std::vector<unsigned int> GLSelectionRectangle::end_dragging(const Camera& camer
     return out;
 }
 
-
-
-void GLSelectionRectangle::render() const
+void GLSelectionRectangle::stop_dragging()
 {
-    float render_color[3];
+    if (!is_active())
+        return;
 
-    switch (m_status) {
-        case Off : return;
-        case SlaSelect : render_color[0] = 0.f;
-                         render_color[1] = 1.f;
-                         render_color[2] = 0.f;
-                         break;
-        case SlaDeselect : render_color[0] = 1.f;
-                           render_color[1] = 0.3f;
-                           render_color[2] = 0.3f;
-                           break;
-    }
+    m_status = Off;
+}
+
+void GLSelectionRectangle::render(const GLCanvas3D& canvas) const
+{
+    if (m_status == Off)
+        return;
+
+    float zoom = canvas.get_camera().zoom;
+    float inv_zoom = (zoom != 0.0f) ? 1.0f / zoom : 0.0f;
+
+    Size cnv_size = canvas.get_canvas_size();
+    float cnv_half_width = 0.5f * (float)cnv_size.get_width();
+    float cnv_half_height = 0.5f * (float)cnv_size.get_height();
+    if ((cnv_half_width == 0.0f) || (cnv_half_height == 0.0f))
+        return;
+
+    Vec2d start(m_start_corner(0) - cnv_half_width, cnv_half_height - m_start_corner(1));
+    Vec2d end(m_end_corner(0) - cnv_half_width, cnv_half_height - m_end_corner(1));
+
+    float left = (float)std::min(start(0), end(0)) * inv_zoom;
+    float top = (float)std::max(start(1), end(1)) * inv_zoom;
+    float right = (float)std::max(start(0), end(0)) * inv_zoom;
+    float bottom = (float)std::min(start(1), end(1)) * inv_zoom;
 
-    glsafe(::glColor3fv(render_color));
     glsafe(::glLineWidth(1.5f));
+    float color[3];
+    color[0] = (m_status == Select) ? 0.3f : 1.0f;
+    color[1] = (m_status == Select) ? 1.0f : 0.3f;
+    color[2] = 0.3f;
+    glsafe(::glColor3fv(color));
 
-    glsafe(::glPushAttrib(GL_TRANSFORM_BIT));   // remember current MatrixMode
+    glsafe(::glDisable(GL_DEPTH_TEST));
 
-    glsafe(::glMatrixMode(GL_MODELVIEW));       // cache modelview matrix and set to identity
     glsafe(::glPushMatrix());
     glsafe(::glLoadIdentity());
 
-    glsafe(::glMatrixMode(GL_PROJECTION));      // cache projection matrix and set to identity
-    glsafe(::glPushMatrix());
-    glsafe(::glLoadIdentity());
-
-    glsafe(::glOrtho(0.f, m_width, m_height, 0.f, -1.f, 1.f)); // set projection matrix so that world coords = window coords
-
-    // render the selection  rectangle (window coordinates):
     glsafe(::glPushAttrib(GL_ENABLE_BIT));
     glsafe(::glLineStipple(4, 0xAAAA));
     glsafe(::glEnable(GL_LINE_STIPPLE));
 
     ::glBegin(GL_LINE_LOOP);
-    ::glVertex3f((GLfloat)m_start_corner(0), (GLfloat)m_start_corner(1), (GLfloat)0.5f);
-    ::glVertex3f((GLfloat)m_end_corner(0), (GLfloat)m_start_corner(1), (GLfloat)0.5f);
-    ::glVertex3f((GLfloat)m_end_corner(0), (GLfloat)m_end_corner(1), (GLfloat)0.5f);
-    ::glVertex3f((GLfloat)m_start_corner(0), (GLfloat)m_end_corner(1), (GLfloat)0.5f);
+    ::glVertex2f((GLfloat)left, (GLfloat)bottom);
+    ::glVertex2f((GLfloat)right, (GLfloat)bottom);
+    ::glVertex2f((GLfloat)right, (GLfloat)top);
+    ::glVertex2f((GLfloat)left, (GLfloat)top);
     glsafe(::glEnd());
+
     glsafe(::glPopAttrib());
 
-    glsafe(::glPopMatrix());                // restore former projection matrix
-    glsafe(::glMatrixMode(GL_MODELVIEW));
-    glsafe(::glPopMatrix());                // restore former modelview matrix
-    glsafe(::glPopAttrib());                // restore former MatrixMode
-    
+    glsafe(::glPopMatrix());
 }
 
+//void GLSelectionRectangle::start_dragging(const Vec2d& mouse_position, float width, float height, EState status)
+//{
+//    if (is_active() || status == Off)
+//        return;
+//
+//    m_width = width;
+//    m_height = height;
+//    m_status = status;
+//    m_start_corner = mouse_position;
+//    m_end_corner = mouse_position;
+//}
+//
+//
+//void GLSelectionRectangle::dragging(const Vec2d& mouse_position)
+//{
+//    if (is_active())
+//        m_end_corner = mouse_position;
+//}
+//
+//std::vector<unsigned int> GLSelectionRectangle::end_dragging(const Camera& camera, const std::vector<Vec3d>& points)
+//{
+//    if (!is_active())
+//        return std::vector<unsigned int>();
+//
+//    m_status = Off;
+//    std::vector<unsigned int> out;
+//
+//    const std::array<int, 4>& viewport = camera.get_viewport();
+//    const Transform3d& modelview_matrix = camera.get_view_matrix();
+//    const Transform3d& projection_matrix = camera.get_projection_matrix();
+//
+//    // bounding box created from the rectangle corners - will take care of order of the corners
+//    BoundingBox rectangle(Points{ Point(m_start_corner.cast<int>()), Point(m_end_corner.cast<int>()) });
+//
+//    // Iterate over all points and determine whether they're in the rectangle.
+//    for (unsigned int i = 0; i<points.size(); ++i) {
+//        const Vec3d& point = points[i];
+//        GLdouble out_x, out_y, out_z;
+//        ::gluProject((GLdouble)point(0), (GLdouble)point(1), (GLdouble)point(2), (GLdouble*)modelview_matrix.data(), (GLdouble*)projection_matrix.data(), (GLint*)viewport.data(), &out_x, &out_y, &out_z);
+//        out_y = m_height - out_y;
+//
+//        if (rectangle.contains(Point(out_x, out_y)))
+//            out.push_back(i);
+//    }
+//
+//    return out;
+//}
+//
+//void GLSelectionRectangle::render() const
+//{
+//    float render_color[3];
+//
+//    switch (m_status) {
+//    case Off: return;
+//        case SlaSelect: render_color[0] = 0.f;
+//                        render_color[1] = 1.f;
+//                        render_color[2] = 0.f;
+//                        break;
+//        case SlaDeselect: render_color[0] = 1.f;
+//                          render_color[1] = 0.3f;
+//                          render_color[2] = 0.3f;
+//                          break;
+//    }
+//
+//    glsafe(::glColor3fv(render_color));
+//    glsafe(::glLineWidth(1.5f));
+//
+//    glsafe(::glPushAttrib(GL_TRANSFORM_BIT));   // remember current MatrixMode
+//
+//    glsafe(::glMatrixMode(GL_MODELVIEW));       // cache modelview matrix and set to identity
+//    glsafe(::glPushMatrix());
+//    glsafe(::glLoadIdentity());
+//
+//    glsafe(::glMatrixMode(GL_PROJECTION));      // cache projection matrix and set to identity
+//    glsafe(::glPushMatrix());
+//    glsafe(::glLoadIdentity());
+//
+//    glsafe(::glOrtho(0.f, m_width, m_height, 0.f, -1.f, 1.f)); // set projection matrix so that world coords = window coords
+//
+//    // render the selection  rectangle (window coordinates):
+//    glsafe(::glPushAttrib(GL_ENABLE_BIT));
+//    glsafe(::glLineStipple(4, 0xAAAA));
+//    glsafe(::glEnable(GL_LINE_STIPPLE));
+//
+//    ::glBegin(GL_LINE_LOOP);
+//    ::glVertex3f((GLfloat)m_start_corner(0), (GLfloat)m_start_corner(1), (GLfloat)0.5f);
+//    ::glVertex3f((GLfloat)m_end_corner(0), (GLfloat)m_start_corner(1), (GLfloat)0.5f);
+//    ::glVertex3f((GLfloat)m_end_corner(0), (GLfloat)m_end_corner(1), (GLfloat)0.5f);
+//    ::glVertex3f((GLfloat)m_start_corner(0), (GLfloat)m_end_corner(1), (GLfloat)0.5f);
+//    glsafe(::glEnd());
+//    glsafe(::glPopAttrib());
+//
+//    glsafe(::glPopMatrix());                // restore former projection matrix
+//    glsafe(::glMatrixMode(GL_MODELVIEW));
+//    glsafe(::glPopMatrix());                // restore former modelview matrix
+//    glsafe(::glPopAttrib());                // restore former MatrixMode
+//
+//}
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
 } // namespace GUI
 } // namespace Slic3r
diff --git a/src/slic3r/GUI/GLSelectionRectangle.hpp b/src/slic3r/GUI/GLSelectionRectangle.hpp
index dd576d797..21e53a172 100644
--- a/src/slic3r/GUI/GLSelectionRectangle.hpp
+++ b/src/slic3r/GUI/GLSelectionRectangle.hpp
@@ -7,6 +7,7 @@ namespace Slic3r {
 namespace GUI {
     
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+class GLCanvas3D;
 struct Camera;
 //class Camera;
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@ -15,33 +16,54 @@ class GLSelectionRectangle {
 public:
     enum EState {
             Off,
-            SlaSelect,
-            SlaDeselect
-        };
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+            Select,
+            Deselect
+//            SlaSelect,
+//            SlaDeselect
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+    };
 
-    // Initiates the rectangle. Width and height describe canvas size.
-    void start_dragging(const Vec2d& mouse_position, float width, float height, EState status);
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+    // Initiates the rectangle. 
+    void start_dragging(const Vec2d& mouse_position, EState status);
 
     // To be called on mouse move.
     void dragging(const Vec2d& mouse_position);
 
     // Given a vector of points in world coordinates, the function returns indices of those
     // that are in the rectangle. It then disables the rectangle.
-    std::vector<unsigned int> end_dragging(const Camera& camera, const std::vector<Vec3d>& points);
+    std::vector<unsigned int> stop_dragging(const GLCanvas3D& canvas, const std::vector<Vec3d>& points);
+
+    // Disables the rectangle.
+    void stop_dragging();
+
+    void render(const GLCanvas3D& canvas) const;
+
+//    // Initiates the rectangle. Width and height describe canvas size.
+//    void start_dragging(const Vec2d& mouse_position, float width, float height, EState status);
+//
+//    // To be called on mouse move.
+//    void dragging(const Vec2d& mouse_position);
+//
+//    // Given a vector of points in world coordinates, the function returns indices of those
+//    // that are in the rectangle. It then disables the rectangle.
+//    std::vector<unsigned int> end_dragging(const Camera& camera, const std::vector<Vec3d>& points);
+//
+//    void render() const;
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
-    void render() const;
-        
     bool is_active() const { return m_status != Off; }
     EState get_status() const { return m_status; }
     
-    
-
 private:
     EState m_status = Off;
     Vec2d m_start_corner;
     Vec2d m_end_corner;
-    float m_width;
-    float m_height;
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+//    float m_width;
+//    float m_height;
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 };
 
     
diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp
index 6149ebaf5..2120fba9d 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp
@@ -97,7 +97,10 @@ void GLGizmoSlaSupports::on_render(const Selection& selection) const
     if (m_quadric != nullptr && selection.is_from_single_instance())
         render_points(selection, false);
 
-    m_selection_rectangle.render();
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+    m_selection_rectangle.render(m_parent);
+//    m_selection_rectangle.render();
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     render_clipping_plane(selection);
 
     glsafe(::glDisable(GL_BLEND));
@@ -464,9 +467,12 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous
         if (action == SLAGizmoEventType::LeftDown && (shift_down || alt_down || control_down)) {
             if (m_hover_id == -1) {
                 if (shift_down || alt_down) {
-                    Size size = m_parent.get_canvas_size();
-                    m_selection_rectangle.start_dragging(mouse_position, size.get_width(), size.get_height(),
-                        shift_down ? GLSelectionRectangle::SlaSelect : GLSelectionRectangle::SlaDeselect);
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+                    m_selection_rectangle.start_dragging(mouse_position, shift_down ? GLSelectionRectangle::Select : GLSelectionRectangle::Deselect);
+//                        Size size = m_parent.get_canvas_size();
+//                        m_selection_rectangle.start_dragging(mouse_position, size.get_width(), size.get_height(),
+//                        shift_down ? GLSelectionRectangle::SlaSelect : GLSelectionRectangle::SlaDeselect);
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                 }
             }
             else {
@@ -521,7 +527,10 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous
             }
             // Now ask the rectangle which of the points are inside.
             const Camera& camera = m_parent.get_camera();
-            std::vector<unsigned int> selected_idxs = m_selection_rectangle.end_dragging(camera, points);
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+            std::vector<unsigned int> selected_idxs = m_selection_rectangle.stop_dragging(m_parent, points);
+//            std::vector<unsigned int> selected_idxs = m_selection_rectangle.end_dragging(camera, points);
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
             // we'll recover current look direction (in world coords) and transform it to model coords.
             const Selection& selection = m_parent.get_selection();
@@ -574,7 +583,10 @@ bool GLGizmoSlaSupports::gizmo_event(SLAGizmoEventType action, const Vec2d& mous
                     }
 
                     if (!is_obscured) {
-                        if (rectangle_status == GLSelectionRectangle::SlaDeselect)
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+                        if (rectangle_status == GLSelectionRectangle::Deselect)
+//                        if (rectangle_status == GLSelectionRectangle::SlaDeselect)
+//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                             unselect_point(i);
                         else
                             select_point(i);
diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp
index 175c75444..33b8e2eac 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.hpp
@@ -70,8 +70,6 @@ public:
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
     bool is_in_editing_mode() const { return m_editing_mode; }
     bool is_selection_rectangle_active() const { return m_selection_rectangle.is_active(); }
-
-    GLSelectionRectangle::EState get_selection_rectangle_status() const { return m_selection_rectangle.get_status(); }
 //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 
 private:
diff --git a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
index 41e74f277..0d0fbd9e6 100644
--- a/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
+++ b/src/slic3r/GUI/Gizmos/GLGizmosManager.cpp
@@ -692,10 +692,6 @@ bool GLGizmosManager::on_mouse(wxMouseEvent& evt, GLCanvas3D& canvas)
             // object moving or selecting is suppressed in that case
             gizmo_event(SLAGizmoEventType::LeftUp, mouse_pos, evt.ShiftDown(), evt.AltDown(), evt.ControlDown());
             processed = true;
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-//            std::cout << "GIZMO - Left up" << std::endl;
-//            canvas.get_wxglcanvas()->SetCursor(*wxSTANDARD_CURSOR);
-//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
         }
         else if (evt.LeftUp() && (m_current == Flatten) && ((canvas.get_hover_volume_id() != -1) || grabber_contains_mouse()))
         {