Index: scribus/scribusview.cpp
===================================================================
--- scribus/scribusview.cpp	(revision 20493)
+++ scribus/scribusview.cpp	(working copy)
@@ -2344,9 +2344,7 @@
 	}
 	else
 		rememberOldZoomLocation(mx,my);
-	double newScale = m_canvas->scale() * (1 + static_cast<double>(Doc->opToolPrefs().magStep)/100.0);
-	if(static_cast<int>(newScale*100)>static_cast<int>(100 * static_cast<double>(Doc->opToolPrefs().magStep)*Prefs->displayPrefs.displayScale/100))
-		newScale = m_canvas->scale() + static_cast<double>(Doc->opToolPrefs().magStep)*Prefs->displayPrefs.displayScale/100;
+	double newScale = m_canvas->scale() * (1 + static_cast<double>(Doc->opToolPrefs().magStep)/400.0);
 	if (Doc->m_Selection->count() != 0)
 	{
 		PageItem *currItem = Doc->m_Selection->itemAt(0);
@@ -2372,10 +2370,8 @@
 	}
 	else
 		rememberOldZoomLocation(mx,my);
-	double newScale = m_canvas->scale() - static_cast<double>(Doc->opToolPrefs().magStep)*Prefs->displayPrefs.displayScale/100;
+	double newScale = m_canvas->scale() / (1+  static_cast<double>(Doc->opToolPrefs().magStep)/400.0);
 	if(newScale<=Prefs->displayPrefs.displayScale/100)
-		newScale = m_canvas->scale() / (1 + static_cast<double>(Doc->opToolPrefs().magStep)/100.0);
-	if(newScale<=Prefs->displayPrefs.displayScale/100)
 		newScale = m_canvas->scale();
 	if (Doc->m_Selection->count() != 0)
 	{
