diff --git a/scribus/scribusview.cpp b/scribus/scribusview.cpp
index 9e9ce2b81..a13a93ecd 100644
--- a/scribus/scribusview.cpp
+++ b/scribus/scribusview.cpp
@@ -230,6 +230,7 @@ ScribusView::ScribusView(QWidget* win, ScribusMainWindow* mw, ScribusDoc *doc) :
 	endEditButton->setVisible(false);
 	connect(endEditButton, SIGNAL(clicked()), m_ScMW, SLOT(slotEndSpecialEdit()));
 
+	m_oldSnapToElem = Doc->SnapElement;
 	languageChange();
 }
 
@@ -3581,6 +3582,13 @@ bool ScribusView::eventFilter(QObject *obj, QEvent *event)
 	else if (event->type() == QEvent::KeyPress)
 	{
 		QKeyEvent* m = static_cast<QKeyEvent*> (event);
+		/* #12453... what do we use this for?
+		 if(m->key() == Qt::Key_Shift)
+		{
+			m_oldSnapToElem = Doc->SnapElement;
+			m_ScMW->SetSnapElements(false);
+		}
+		*/
 		if (m_canvasMode->handleKeyEvents())
 			m_canvasMode->keyPressEvent(m);
 		else
@@ -3590,6 +3598,10 @@ bool ScribusView::eventFilter(QObject *obj, QEvent *event)
 	else if (event->type() == QEvent::KeyRelease)
 	{
 		QKeyEvent* m = static_cast<QKeyEvent*> (event);
+		/* #12453... what do we use this for?
+		if(m->key() == Qt::Key_Shift)
+			m_ScMW->SetSnapElements(m_oldSnapToElem);
+		*/
 		if (m_canvasMode->handleKeyEvents())
 			m_canvasMode->keyReleaseEvent(m);
 		else
diff --git a/scribus/scribusview.h b/scribus/scribusview.h
index ca980243a..11c2138eb 100644
--- a/scribus/scribusview.h
+++ b/scribus/scribusview.h
@@ -277,6 +277,7 @@ private: // Private attributes
 	bool _isGlobalMode;
 	bool linkAfterDraw;
 	bool ImageAfterDraw;
+	bool m_oldSnapToElem;
 
 private slots:
 	void setZoom();
