diff --git a/Code/Mantid/MantidPlot/src/ApplicationWindow.cpp b/Code/Mantid/MantidPlot/src/ApplicationWindow.cpp
index 8559930f36c4e377f4b0edb9962c287cf0bb53b5..93a123f98a87d2f937feff90408dcdfce1cde3f2 100644
--- a/Code/Mantid/MantidPlot/src/ApplicationWindow.cpp
+++ b/Code/Mantid/MantidPlot/src/ApplicationWindow.cpp
@@ -8799,10 +8799,14 @@ void ApplicationWindow::undo()
 
   QApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
 
-  if (qobject_cast<Note*>(w))
-    dynamic_cast<Note*>(w)->editor()->undo();
-  else if (qobject_cast<Matrix*>(w)){
-    QUndoStack *stack = (dynamic_cast<Matrix*>(w))->undoStack();
+  auto note = dynamic_cast<Note*>(w);
+  auto matrix = dynamic_cast<Matrix*>(w);
+
+  if(note)
+    note->editor()->undo();
+  else if(matrix)
+  {
+    QUndoStack *stack = matrix->undoStack();
     if (stack && stack->canUndo())
       stack->undo();
   }