diff --git a/Plugins/org.mitk.gui.qt.application/files.cmake b/Plugins/org.mitk.gui.qt.application/files.cmake
index 4d661dfef3..701f4e7b55 100644
--- a/Plugins/org.mitk.gui.qt.application/files.cmake
+++ b/Plugins/org.mitk.gui.qt.application/files.cmake
@@ -1,86 +1,88 @@
 set(SRC_CPP_FILES
   QmitkAbstractDataNodeAction.cpp
   QmitkCloseProjectAction.cpp
   QmitkDataNodeColorAction.cpp
   QmitkDataNodeColorMapAction.cpp
   QmitkDataNodeComponentAction.cpp
   QmitkDataNodeContextMenu.cpp
   QmitkDataNodeGlobalReinitAction.cpp
   QmitkDataNodeHideAllAction.cpp
   QmitkDataNodeOpacityAction.cpp
   QmitkDataNodeOpenInAction.cpp
   QmitkDataNodeReinitAction.cpp
   QmitkDataNodeRemoveAction.cpp
+  QmitkDataNodeResetGeometryAction.cpp
   QmitkDataNodeShowDetailsAction.cpp
   QmitkDataNodeShowSelectedNodesAction.cpp
   QmitkDataNodeSurfaceRepresentationAction.cpp
   QmitkDataNodeTextureInterpolationAction.cpp
   QmitkDataNodeToggleVisibilityAction.cpp
   QmitkDefaultDropTargetListener.cpp
   QmitkFileExitAction.cpp
   QmitkFileOpenAction.cpp
   QmitkFileSaveAction.cpp
   QmitkUndoAction.cpp
   QmitkRedoAction.cpp
   QmitkPreferencesDialog.cpp
   QmitkStatusBar.cpp
 )
 
 set(INTERNAL_CPP_FILES
   org_mitk_gui_qt_application_Activator.cpp
   QmitkEditorsPreferencePage.cpp
   QmitkGeneralPreferencePage.cpp
   QmitkShowPreferencePageHandler.cpp
 )
 
 set(MOC_H_FILES
   src/QmitkCloseProjectAction.h
   src/QmitkDataNodeColorAction.h
   src/QmitkDataNodeColorMapAction.h
   src/QmitkDataNodeComponentAction.h
   src/QmitkDataNodeGlobalReinitAction.h
   src/QmitkDataNodeContextMenu.h
   src/QmitkDataNodeHideAllAction.h
   src/QmitkDataNodeOpacityAction.h
   src/QmitkDataNodeOpenInAction.h
   src/QmitkDataNodeReinitAction.h
   src/QmitkDataNodeRemoveAction.h
+  src/QmitkDataNodeResetGeometryAction.h
   src/QmitkDataNodeShowDetailsAction.h
   src/QmitkDataNodeShowSelectedNodesAction.h
   src/QmitkDataNodeSurfaceRepresentationAction.h
   src/QmitkDataNodeTextureInterpolationAction.h
   src/QmitkDataNodeToggleVisibilityAction.h
   src/QmitkFileExitAction.h
   src/QmitkFileOpenAction.h
   src/QmitkFileSaveAction.h
   src/QmitkUndoAction.h
   src/QmitkRedoAction.h
   src/QmitkPreferencesDialog.h
 
   src/internal/org_mitk_gui_qt_application_Activator.h
   src/internal/QmitkEditorsPreferencePage.h
   src/internal/QmitkGeneralPreferencePage.h
   src/internal/QmitkShowPreferencePageHandler.h
 )
 
 set(UI_FILES
   src/QmitkPreferencesDialog.ui
 )
 
 set(CACHED_RESOURCE_FILES
   plugin.xml
 )
 
 set(QRC_FILES
   resources/resources.qrc
 )
 
 set(CPP_FILES )
 
 foreach(file ${SRC_CPP_FILES})
   set(CPP_FILES ${CPP_FILES} src/${file})
 endforeach(file ${SRC_CPP_FILES})
 
 foreach(file ${INTERNAL_CPP_FILES})
   set(CPP_FILES ${CPP_FILES} src/internal/${file})
 endforeach(file ${INTERNAL_CPP_FILES})
diff --git a/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeContextMenu.cpp b/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeContextMenu.cpp
index 9c3e7eea21..4afd52578c 100644
--- a/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeContextMenu.cpp
+++ b/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeContextMenu.cpp
@@ -1,483 +1,488 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 #include <QmitkDataNodeContextMenu.h>
 
 #include <QmitkCustomVariants.h>
 #include <QmitkFileSaveAction.h>
 #include <QmitkNodeDescriptorManager.h>
 
 #include <mitkDataNodeSelection.h>
 #include <mitkIContextMenuAction.h>
 
 #include <berryAbstractUICTKPlugin.h>
 #include <berryIContributor.h>
 #include <berryIExtensionRegistry.h>
 #include <berryISelectionService.h>
 #include <berryPlatform.h>
 
 QmitkDataNodeContextMenu::QmitkDataNodeContextMenu(berry::IWorkbenchPartSite::Pointer workbenchPartSite, QWidget* parent)
   : QMenu(parent),
     m_Parent(parent),
     m_WorkbenchPartSite(workbenchPartSite)
 {
   this->InitNodeDescriptors();
   this->InitDefaultActions();
   this->InitExtensionPointActions();
 }
 
 QmitkDataNodeContextMenu::~QmitkDataNodeContextMenu()
 {
   for (auto& descriptorActionPair : m_DescriptorActionList)
     descriptorActionPair.first->RemoveAction(descriptorActionPair.second);
 }
 
 void QmitkDataNodeContextMenu::SetDataStorage(mitk::DataStorage* dataStorage)
 {
   m_DataStorage = dataStorage;
 
   for (auto& descriptorActionPair : m_DescriptorActionList)
   {
     auto dataNodeAction = dynamic_cast<QmitkAbstractDataNodeAction*>(descriptorActionPair.second);
 
     if (nullptr != dataNodeAction)
       dataNodeAction->SetDataStorage(dataStorage);
   }  
 }
 
 void QmitkDataNodeContextMenu::SetBaseRenderer(mitk::BaseRenderer* baseRenderer)
 {
   m_BaseRenderer = baseRenderer;
 
   for (auto& descriptorActionPair : m_DescriptorActionList)
   {
     auto dataNodeAction = dynamic_cast<QmitkAbstractDataNodeAction*>(descriptorActionPair.second);
 
     if (nullptr != dataNodeAction)
       dataNodeAction->SetBaseRenderer(baseRenderer);
   }
 }
 
 void QmitkDataNodeContextMenu::SetSurfaceDecimation(bool surfaceDecimation)
 {
   m_SurfaceDecimation = surfaceDecimation;
 }
 
 void QmitkDataNodeContextMenu::SetSelectedNodes(const QList<mitk::DataNode::Pointer>& selectedNodes)
 {
   m_SelectedNodes = selectedNodes;
 }
 
 void QmitkDataNodeContextMenu::InitNodeDescriptors()
 {
   auto nodeDescriptorManager = QmitkNodeDescriptorManager::GetInstance();
 
   m_UnknownDataNodeDescriptor = nodeDescriptorManager->GetUnknownDataNodeDescriptor();
   m_ImageDataNodeDescriptor = nodeDescriptorManager->GetDescriptor("Image");
   m_MultiComponentImageDataNodeDescriptor = nodeDescriptorManager->GetDescriptor("MultiComponentImage");
   m_DiffusionImageDataNodeDescriptor = nodeDescriptorManager->GetDescriptor("DiffusionImage");
   m_FiberBundleDataNodeDescriptor = nodeDescriptorManager->GetDescriptor("FiberBundle");
   m_PeakImageDataNodeDescriptor = nodeDescriptorManager->GetDescriptor("PeakImage");
   m_SegmentDataNodeDescriptor = nodeDescriptorManager->GetDescriptor("Segment");
   m_SurfaceDataNodeDescriptor = nodeDescriptorManager->GetDescriptor("Surface");
   m_PointSetNodeDescriptor = nodeDescriptorManager->GetDescriptor("PointSet");
   m_PlanarLineNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarLine");
   m_PlanarCircleNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarCircle");
   m_PlanarEllipseNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarEllipse");
   m_PlanarAngleNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarAngle");
   m_PlanarFourPointAngleNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarFourPointAngle");
   m_PlanarRectangleNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarRectangle");
   m_PlanarPolygonNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarPolygon");
   m_PlanarPathNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarPath");
   m_PlanarDoubleEllipseNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarDoubleEllipse");
   m_PlanarBezierCurveNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarBezierCurve");
   m_PlanarSubdivisionPolygonNodeDescriptor = nodeDescriptorManager->GetDescriptor("PlanarSubdivisionPolygon");
 }
 
 void QmitkDataNodeContextMenu::InitDefaultActions()
 {
   auto workbenchPartSite = m_WorkbenchPartSite.Lock();
 
   m_GlobalReinitAction = new QmitkDataNodeGlobalReinitAction(m_Parent, workbenchPartSite);
   m_GlobalReinitAction->setIcon(QIcon(":/org.mitk.gui.qt.datamanager/Refresh_48.png"));
   m_UnknownDataNodeDescriptor->AddAction(m_GlobalReinitAction, true);
   m_DescriptorActionList.push_back(std::make_pair(m_UnknownDataNodeDescriptor, m_GlobalReinitAction));
 
   m_ReinitAction = new QmitkDataNodeReinitAction(m_Parent, workbenchPartSite);
   m_ReinitAction->setIcon(QIcon(":/org.mitk.gui.qt.datamanager/Refresh_48.png"));
   m_UnknownDataNodeDescriptor->AddAction(m_ReinitAction, true);
   m_DescriptorActionList.push_back(std::make_pair(m_UnknownDataNodeDescriptor, m_ReinitAction));
 
+  m_ResetGeometryAction = new QmitkDataNodeResetGeometryAction(m_Parent, workbenchPartSite);
+  m_ResetGeometryAction->setIcon(QIcon(":/org.mitk.gui.qt.datamanager/Refresh_48.png"));
+  m_UnknownDataNodeDescriptor->AddAction(m_ResetGeometryAction, true);
+  m_DescriptorActionList.push_back(std::make_pair(m_UnknownDataNodeDescriptor, m_ResetGeometryAction));
+
   QAction* saveAction = new QmitkFileSaveAction(QIcon(":/org.mitk.gui.qt.datamanager/Save_48.png"), workbenchPartSite->GetWorkbenchWindow());
   m_UnknownDataNodeDescriptor->AddAction(saveAction, true);
   m_DescriptorActionList.push_back(std::make_pair(m_UnknownDataNodeDescriptor, saveAction));
 
   m_RemoveAction = new QmitkDataNodeRemoveAction(m_Parent, workbenchPartSite);
   m_RemoveAction->setIcon(QIcon(":/org.mitk.gui.qt.datamanager/Remove_48.png"));
   m_UnknownDataNodeDescriptor->AddAction(m_RemoveAction, true);
   m_DescriptorActionList.push_back(std::make_pair(m_UnknownDataNodeDescriptor, m_RemoveAction));
 
   m_ShowSelectedNodesAction = new QmitkDataNodeShowSelectedNodesAction(m_Parent, workbenchPartSite);
   m_RemoveAction->setIcon(QIcon(":/org.mitk.gui.qt.datamanager/ShowSelectedNode_48.png"));
   m_UnknownDataNodeDescriptor->AddAction(m_ShowSelectedNodesAction, true);
   m_DescriptorActionList.push_back(std::make_pair(m_UnknownDataNodeDescriptor, m_ShowSelectedNodesAction));
 
   m_ToggleVisibilityAction = new QmitkDataNodeToggleVisibilityAction(m_Parent, workbenchPartSite);
   m_ToggleVisibilityAction->setIcon(QIcon(":/org.mitk.gui.qt.datamanager/InvertShowSelectedNode_48.png"));
   m_UnknownDataNodeDescriptor->AddAction(m_ToggleVisibilityAction, true);
   m_DescriptorActionList.push_back(std::make_pair(m_UnknownDataNodeDescriptor, m_ToggleVisibilityAction));
 
   m_ShowDetailsAction = new QmitkDataNodeShowDetailsAction(m_Parent, workbenchPartSite);
   m_ShowDetailsAction->setIcon(QIcon(":/org.mitk.gui.qt.datamanager/ShowDataInfo_48.png"));
   m_UnknownDataNodeDescriptor->AddAction(m_ShowDetailsAction, true);
   m_DescriptorActionList.push_back(std::make_pair(m_UnknownDataNodeDescriptor, m_ShowDetailsAction));
 
   m_OpacityAction = new QmitkDataNodeOpacityAction(m_Parent, workbenchPartSite);
   m_UnknownDataNodeDescriptor->AddAction(m_OpacityAction, false);
   m_DescriptorActionList.push_back(std::make_pair(m_UnknownDataNodeDescriptor, m_OpacityAction));
 
   m_ColorAction = new QmitkDataNodeColorAction(m_Parent, workbenchPartSite);
   this->AddColorAction(m_ColorAction);
 
   m_ColormapAction = new QmitkDataNodeColorMapAction(m_Parent, workbenchPartSite);
   m_ImageDataNodeDescriptor->AddAction(m_ColormapAction);
   m_DescriptorActionList.push_back(std::make_pair(m_ImageDataNodeDescriptor, m_ColormapAction));
 
   if (nullptr != m_DiffusionImageDataNodeDescriptor)
   {
     m_DiffusionImageDataNodeDescriptor->AddAction(m_ColormapAction, false);
     m_DescriptorActionList.push_back(std::make_pair(m_DiffusionImageDataNodeDescriptor, m_ColormapAction));
   }
 
   m_ComponentAction = new QmitkDataNodeComponentAction(m_Parent, workbenchPartSite);
   m_MultiComponentImageDataNodeDescriptor->AddAction(m_ComponentAction, false);
   m_DescriptorActionList.push_back(std::make_pair(m_MultiComponentImageDataNodeDescriptor, m_ComponentAction));
 
   if (nullptr != m_DiffusionImageDataNodeDescriptor)
   {
     m_DiffusionImageDataNodeDescriptor->AddAction(m_ComponentAction, false);
     m_DescriptorActionList.push_back(std::make_pair(m_DiffusionImageDataNodeDescriptor, m_ComponentAction));
   }
 
   m_TextureInterpolationAction = new QmitkDataNodeTextureInterpolationAction(m_Parent, workbenchPartSite);
   m_ImageDataNodeDescriptor->AddAction(m_TextureInterpolationAction, false);
   m_DescriptorActionList.push_back(std::make_pair(m_ImageDataNodeDescriptor, m_TextureInterpolationAction));
 
   if (nullptr != m_DiffusionImageDataNodeDescriptor)
   {
     m_DiffusionImageDataNodeDescriptor->AddAction(m_TextureInterpolationAction, false);
     m_DescriptorActionList.push_back(std::make_pair(m_DiffusionImageDataNodeDescriptor, m_TextureInterpolationAction));
   }
 
   if (nullptr != m_SegmentDataNodeDescriptor)
   {
     m_SegmentDataNodeDescriptor->AddAction(m_TextureInterpolationAction, false);
     m_DescriptorActionList.push_back(std::make_pair(m_SegmentDataNodeDescriptor, m_TextureInterpolationAction));
   }
 
   m_SurfaceRepresentationAction = new QmitkDataNodeSurfaceRepresentationAction(m_Parent, workbenchPartSite);
   m_SurfaceDataNodeDescriptor->AddAction(m_SurfaceRepresentationAction, false);
   m_DescriptorActionList.push_back(std::make_pair(m_SurfaceDataNodeDescriptor, m_SurfaceRepresentationAction));
 }
 
 void QmitkDataNodeContextMenu::InitExtensionPointActions()
 {
   auto extensionPointService = berry::Platform::GetExtensionRegistry();
   auto customMenuConfigs = extensionPointService->GetConfigurationElementsFor("org.mitk.gui.qt.datamanager.contextMenuActions");
 
   DescriptorActionListType descriptorActionList;
   m_ConfigElements.clear();
 
   for (const auto& customMenuConfig : qAsConst(customMenuConfigs))
   {
     auto descriptorName = customMenuConfig->GetAttribute("nodeDescriptorName");
     auto actionLabel = customMenuConfig->GetAttribute("label");
     auto actionClass = customMenuConfig->GetAttribute("class");
 
     if (descriptorName.isEmpty() || actionLabel.isEmpty() || actionClass.isEmpty())
       continue;
 
     auto descriptor = QmitkNodeDescriptorManager::GetInstance()->GetDescriptor(descriptorName);
 
     if (nullptr == descriptor)
     {
       MITK_WARN << "Cannot add action \"" << actionLabel << "\" to non-existent descriptor \"" << descriptorName << "\".";
       continue;
     }
 
     QAction* action = nullptr;
     auto actionIcon = customMenuConfig->GetAttribute("icon");
 
     if (!actionIcon.isEmpty())
     {
       QIcon icon = !QFile::exists(actionIcon)
         ? berry::AbstractUICTKPlugin::ImageDescriptorFromPlugin(customMenuConfig->GetContributor()->GetName(), actionIcon)
         : QIcon(actionIcon);
 
       action = new QAction(icon, actionLabel, m_Parent);
     }
     else
     {
       action = new QAction(actionLabel, m_Parent);
     }
 
     if (nullptr != action)
     {
       // See T26938. We do not know why but without the lambda function indirection, the
       // connection is lost after the content menu was shown for the first time.
       connect(action, &QAction::triggered, [action, this]()
       {
         this->OnExtensionPointActionTriggered(action);
       });
 
       m_ConfigElements[action] = customMenuConfig;
       descriptorActionList.push_back(std::make_pair(descriptor, action));
     }
   }
 
   this->AddDescriptorActionList(descriptorActionList);
 }
 
 void QmitkDataNodeContextMenu::InitServiceActions()
 {
 }
 
 void QmitkDataNodeContextMenu::OnContextMenuRequested(const QPoint& /*pos*/)
 {
   auto workbenchPartSite = m_WorkbenchPartSite.Lock();
 
   if (workbenchPartSite.IsNull())
     return;
 
   auto selection = workbenchPartSite->GetWorkbenchWindow()->GetSelectionService()->GetSelection()
     .Cast<const mitk::DataNodeSelection>();
 
   if (selection.IsNull() || selection->IsEmpty())
     return;
 
   m_SelectedNodes = QList<mitk::DataNode::Pointer>::fromStdList(selection->GetSelectedDataNodes());
 
   if (!m_SelectedNodes.isEmpty())
   {
     this->clear();
 
     auto actions = m_SelectedNodes.size() == 1
       ? this->GetActions(m_SelectedNodes.front())
       : this->GetActions(m_SelectedNodes);
 
     for (auto& action : actions)
     {
       auto dataNodeAction = dynamic_cast<QmitkAbstractDataNodeAction*>(action);
 
       if (nullptr != dataNodeAction)
         dataNodeAction->SetSelectedNodes(m_SelectedNodes);
     }
 
     this->addActions(actions);
     this->popup(QCursor::pos());
   }
 }
 
 void QmitkDataNodeContextMenu::OnExtensionPointActionTriggered(QAction* action)
 {
   auto configElementIter = m_ConfigElements.find(action);
 
   if (m_ConfigElements.end() == configElementIter)
   {
     MITK_WARN << "Associated configuration element for action \"" << action->text() << "\" not found.";
     return;
   }
 
   auto configElement = configElementIter->second;
   auto contextMenuAction = configElement->CreateExecutableExtension<mitk::IContextMenuAction>("class");
   auto dataStorage = m_DataStorage.Lock();
 
   if (dataStorage.IsNotNull())
     contextMenuAction->SetDataStorage(dataStorage);
 
   if ("QmitkCreatePolygonModelAction" == configElement->GetAttribute("class"))
   {
     contextMenuAction->SetSmoothed("true" == configElement->GetAttribute("smoothed"));
     contextMenuAction->SetDecimated(m_SurfaceDecimation);
   }
 
   contextMenuAction->Run(m_SelectedNodes);
 }
 
 void QmitkDataNodeContextMenu::AddColorAction(QWidgetAction* colorAction)
 {
   if (nullptr != m_ImageDataNodeDescriptor)
   {
     m_ImageDataNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_ImageDataNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_MultiComponentImageDataNodeDescriptor)
   {
     m_MultiComponentImageDataNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_MultiComponentImageDataNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_DiffusionImageDataNodeDescriptor)
   {
     m_DiffusionImageDataNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_DiffusionImageDataNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_FiberBundleDataNodeDescriptor)
   {
     m_FiberBundleDataNodeDescriptor->AddAction(colorAction, false);
     m_DescriptorActionList.push_back(std::make_pair(m_FiberBundleDataNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PeakImageDataNodeDescriptor)
   {
     m_PeakImageDataNodeDescriptor->AddAction(colorAction, false);
     m_DescriptorActionList.push_back(std::make_pair(m_PeakImageDataNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_SegmentDataNodeDescriptor)
   {
     m_SegmentDataNodeDescriptor->AddAction(colorAction, false);
     m_DescriptorActionList.push_back(std::make_pair(m_SegmentDataNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_SurfaceDataNodeDescriptor)
   {
     m_SurfaceDataNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_SurfaceDataNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PointSetNodeDescriptor)
   {
     m_PointSetNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PointSetNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarLineNodeDescriptor)
   {
     m_PlanarLineNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarLineNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarCircleNodeDescriptor)
   {
     m_PlanarCircleNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarCircleNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarEllipseNodeDescriptor)
   {
     m_PlanarEllipseNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarEllipseNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarAngleNodeDescriptor)
   {
     m_PlanarAngleNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarAngleNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarFourPointAngleNodeDescriptor)
   {
     m_PlanarFourPointAngleNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarFourPointAngleNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarRectangleNodeDescriptor)
   {
     m_PlanarRectangleNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarRectangleNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarPolygonNodeDescriptor)
   {
     m_PlanarPolygonNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarPolygonNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarPathNodeDescriptor)
   {
     m_PlanarPathNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarPathNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarDoubleEllipseNodeDescriptor)
   {
     m_PlanarDoubleEllipseNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarDoubleEllipseNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarBezierCurveNodeDescriptor)
   {
     m_PlanarBezierCurveNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarBezierCurveNodeDescriptor, colorAction));
   }
 
   if (nullptr != m_PlanarSubdivisionPolygonNodeDescriptor)
   {
     m_PlanarSubdivisionPolygonNodeDescriptor->AddAction(colorAction, true);
     m_DescriptorActionList.push_back(std::make_pair(m_PlanarSubdivisionPolygonNodeDescriptor, colorAction));
   }
 }
 
 void QmitkDataNodeContextMenu::AddDescriptorActionList(DescriptorActionListType& descriptorActionList)
 {
   using ListItem = std::pair<QmitkNodeDescriptor*, QAction*>;
 
   std::sort(descriptorActionList.begin(), descriptorActionList.end(), [](const ListItem& left, const ListItem& right) -> bool
   {
     return left.second->text() < right.second->text();
   });
 
   for (auto& descriptorActionPair : descriptorActionList)
   {
     descriptorActionPair.first->AddAction(descriptorActionPair.second);
     m_DescriptorActionList.push_back(descriptorActionPair);
   }
 }
 
 QList<QAction*> QmitkDataNodeContextMenu::GetActions(const mitk::DataNode* node)
 {
   QList<QAction*> actions;
 
   for(const auto& descriptorActionPair : m_DescriptorActionList)
   {
     if (descriptorActionPair.first->CheckNode(node) || "Unknown" == descriptorActionPair.first->GetNameOfClass())
       actions.append(descriptorActionPair.second);
   }
 
   return actions;
 }
 
 QList<QAction*> QmitkDataNodeContextMenu::GetActions(const QList<mitk::DataNode::Pointer>& nodes)
 {
   QList<QAction*> actions;
 
   for (const auto& descriptorActionPair : m_DescriptorActionList)
   {
     for (const auto& node : nodes)
     {
       if (descriptorActionPair.first->CheckNode(node) || "Unknown" == descriptorActionPair.first->GetNameOfClass())
       {
         auto batchActions = descriptorActionPair.first->GetBatchActions();
 
         if (std::find(batchActions.begin(), batchActions.end(), descriptorActionPair.second) != batchActions.end())
           actions.append(descriptorActionPair.second);
 
         break;
       }
     }
   }
 
   return actions;
 }
diff --git a/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeContextMenu.h b/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeContextMenu.h
index 2dcf8ba901..858cf6123e 100644
--- a/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeContextMenu.h
+++ b/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeContextMenu.h
@@ -1,136 +1,138 @@
 /*============================================================================
 
 The Medical Imaging Interaction Toolkit (MITK)
 
 Copyright (c) German Cancer Research Center (DKFZ)
 All rights reserved.
 
 Use of this source code is governed by a 3-clause BSD license that can be
 found in the LICENSE file.
 
 ============================================================================*/
 
 #ifndef QMITKDATANODECONTEXTMENU_H
 #define QMITKDATANODECONTEXTMENU_H
 
 #include <org_mitk_gui_qt_application_Export.h>
 
 // qt widgets module
 #include "QmitkDataNodeGlobalReinitAction.h"
 #include "QmitkDataNodeReinitAction.h"
+#include "QmitkDataNodeResetGeometryAction.h"
 #include "QmitkDataNodeRemoveAction.h"
 #include "QmitkDataNodeShowSelectedNodesAction.h"
 #include "QmitkDataNodeToggleVisibilityAction.h"
 #include "QmitkDataNodeShowDetailsAction.h"
 #include "QmitkDataNodeOpacityAction.h"
 #include "QmitkDataNodeColorAction.h"
 #include "QmitkDataNodeColorMapAction.h"
 #include "QmitkDataNodeComponentAction.h"
 #include "QmitkDataNodeTextureInterpolationAction.h"
 #include "QmitkDataNodeSurfaceRepresentationAction.h"
 #include "QmitkNodeDescriptor.h"
 
 // mitk core
 #include <mitkBaseRenderer.h>
 #include <mitkDataStorage.h>
 #include <mitkWeakPointer.h>
 
 // blueberry ui qt plugin
 #include <berryIConfigurationElement.h>
 #include <berryIWorkbenchPartSite.h>
 
 // qt
 #include <QMenu>
 
 class MITK_QT_APP QmitkDataNodeContextMenu : public QMenu
 {
   Q_OBJECT
 
 public:
 
   QmitkDataNodeContextMenu(berry::IWorkbenchPartSite::Pointer workbenchPartSite, QWidget* parent = nullptr);
 
   ~QmitkDataNodeContextMenu() override;
 
   void SetDataStorage(mitk::DataStorage* dataStorage);
   void SetBaseRenderer(mitk::BaseRenderer* baseRenderer);
 
   void SetSurfaceDecimation(bool surfaceDecimation);
 
   void SetSelectedNodes(const QList<mitk::DataNode::Pointer>& selectedNodes);
 
 public Q_SLOTS:
 
   void OnContextMenuRequested(const QPoint& pos);
   void OnExtensionPointActionTriggered(QAction* action);
 
 private:
 
   using DescriptorActionListType = std::vector<std::pair<QmitkNodeDescriptor*, QAction*>>;
   using ConfigurationElementsType = std::map<QAction*, berry::IConfigurationElement::Pointer>;
 
   void InitNodeDescriptors();
   void InitDefaultActions();
   void InitExtensionPointActions();
   void InitServiceActions();
 
   void AddColorAction(QWidgetAction* colorAction);
   void AddDescriptorActionList(DescriptorActionListType& descriptorActionList);
 
   QList<QAction*> GetActions(const mitk::DataNode* node);
   QList<QAction*> GetActions(const QList<mitk::DataNode::Pointer>& nodes);
 
   QWidget* m_Parent;
   berry::IWorkbenchPartSite::WeakPtr m_WorkbenchPartSite;
 
   mitk::WeakPointer<mitk::DataStorage> m_DataStorage;
   mitk::WeakPointer<mitk::BaseRenderer> m_BaseRenderer;
   QList<mitk::DataNode::Pointer> m_SelectedNodes;
 
   // store a list of all actions to remove them on menu destruction
   DescriptorActionListType m_DescriptorActionList;
 
   // stores the configuration elements for the context menu actions from extension points
   ConfigurationElementsType m_ConfigElements;
 
   QmitkNodeDescriptor* m_UnknownDataNodeDescriptor;
   QmitkNodeDescriptor* m_ImageDataNodeDescriptor;
   QmitkNodeDescriptor* m_MultiComponentImageDataNodeDescriptor;
   QmitkNodeDescriptor* m_DiffusionImageDataNodeDescriptor;
   QmitkNodeDescriptor* m_FiberBundleDataNodeDescriptor;
   QmitkNodeDescriptor* m_PeakImageDataNodeDescriptor;
   QmitkNodeDescriptor* m_SegmentDataNodeDescriptor;
   QmitkNodeDescriptor* m_SurfaceDataNodeDescriptor;
   QmitkNodeDescriptor* m_PointSetNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarLineNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarCircleNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarEllipseNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarAngleNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarFourPointAngleNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarRectangleNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarPolygonNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarPathNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarDoubleEllipseNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarBezierCurveNodeDescriptor;
   QmitkNodeDescriptor* m_PlanarSubdivisionPolygonNodeDescriptor;
 
   //////////////////////////////////////////////////////////////////////////
   // default actions
   //////////////////////////////////////////////////////////////////////////
   QmitkDataNodeGlobalReinitAction* m_GlobalReinitAction;
   QmitkDataNodeReinitAction* m_ReinitAction;
+  QmitkDataNodeResetGeometryAction* m_ResetGeometryAction;
   QmitkDataNodeRemoveAction* m_RemoveAction;
   QmitkDataNodeShowSelectedNodesAction* m_ShowSelectedNodesAction;
   QmitkDataNodeToggleVisibilityAction* m_ToggleVisibilityAction;
   QmitkDataNodeShowDetailsAction* m_ShowDetailsAction;
   QmitkDataNodeOpacityAction* m_OpacityAction;
   QmitkDataNodeColorAction* m_ColorAction;
   QmitkDataNodeColorMapAction* m_ColormapAction;
   QmitkDataNodeComponentAction* m_ComponentAction;
   QmitkDataNodeTextureInterpolationAction* m_TextureInterpolationAction;
   QmitkDataNodeSurfaceRepresentationAction* m_SurfaceRepresentationAction;
 
   bool m_SurfaceDecimation;
 };
 
 #endif // QMITKDATANODECONTEXTMENU_H
diff --git a/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeResetGeometryAction.cpp b/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeResetGeometryAction.cpp
new file mode 100644
index 0000000000..25cdf72dc0
--- /dev/null
+++ b/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeResetGeometryAction.cpp
@@ -0,0 +1,113 @@
+/*============================================================================
+
+The Medical Imaging Interaction Toolkit (MITK)
+
+Copyright (c) German Cancer Research Center (DKFZ)
+All rights reserved.
+
+Use of this source code is governed by a 3-clause BSD license that can be
+found in the LICENSE file.
+
+============================================================================*/
+
+#include <QmitkDataNodeResetGeometryAction.h>
+
+// mitk core
+#include <mitkImage.h>
+#include <mitkRenderingManager.h>
+
+// mitk gui common plugin
+#include <mitkWorkbenchUtil.h>
+
+// namespace that contains the concrete action
+namespace ResetGeometryAction
+{
+  void Run(berry::IWorkbenchPartSite::Pointer workbenchPartSite, const mitk::TimeGeometry* referenceGeometry, mitk::BaseRenderer* baseRenderer /*= nullptr*/)
+  {
+
+    if (workbenchPartSite.IsNull())
+    {
+      return;
+    }
+
+    auto* renderWindowPart = mitk::WorkbenchUtil::GetRenderWindowPart(workbenchPartSite->GetPage(), mitk::WorkbenchUtil::NONE);
+    if (nullptr == renderWindowPart)
+    {
+      renderWindowPart = mitk::WorkbenchUtil::OpenRenderWindowPart(workbenchPartSite->GetPage(), false);
+      if (nullptr == renderWindowPart)
+      {
+        // no render window available
+        return;
+      }
+    }
+
+    if (nullptr == referenceGeometry)
+    {
+      return;
+    }
+
+    mitk::TimeStepType imageTimeStep = 0;
+
+    // store the current position to set it again later, if the camera should not be reset
+    mitk::Point3D currentPosition = renderWindowPart->GetSelectedPosition();
+
+    // store the current time step to set it again later, if the camera should not be reset
+    auto* renderingManager = mitk::RenderingManager::GetInstance();
+    const auto currentTimePoint = renderingManager->GetTimeNavigationController()->GetSelectedTimePoint();
+    if (referenceGeometry->IsValidTimePoint(currentTimePoint))
+    {
+      imageTimeStep = referenceGeometry->TimePointToTimeStep(currentTimePoint);
+    }
+
+    if (nullptr == baseRenderer)
+    {
+      renderingManager->InitializeViews(referenceGeometry, mitk::RenderingManager::REQUEST_UPDATE_ALL, false);
+    }
+    else
+    {
+      renderingManager->InitializeView(baseRenderer->GetRenderWindow(), referenceGeometry, false);
+    }
+
+    renderWindowPart->SetSelectedPosition(currentPosition);
+    renderingManager->GetTimeNavigationController()->GetTime()->SetPos(imageTimeStep);
+  }
+} // namespace ResetGeometryAction
+
+QmitkDataNodeResetGeometryAction::QmitkDataNodeResetGeometryAction(QWidget* parent, berry::IWorkbenchPartSite::Pointer workbenchpartSite)
+  : QAction(parent)
+  , QmitkAbstractDataNodeAction(workbenchpartSite)
+{
+  this->setText(tr("Reset geometry"));
+  this->InitializeAction();
+}
+
+QmitkDataNodeResetGeometryAction::QmitkDataNodeResetGeometryAction(QWidget* parent, berry::IWorkbenchPartSite* workbenchpartSite)
+  : QmitkDataNodeResetGeometryAction(parent, berry::IWorkbenchPartSite::Pointer(workbenchpartSite))
+{
+}
+
+void QmitkDataNodeResetGeometryAction::InitializeAction()
+{
+  connect(this, &QmitkDataNodeResetGeometryAction::triggered, this, &QmitkDataNodeResetGeometryAction::OnActionTriggered);
+}
+
+void QmitkDataNodeResetGeometryAction::OnActionTriggered(bool /*checked*/)
+{
+  auto workbenchPartSite = m_WorkbenchPartSite.Lock();
+
+  if (workbenchPartSite.IsNull())
+  {
+    return;
+  }
+
+  auto baseRenderer = this->GetBaseRenderer();
+
+  auto selectedNode = this->GetSelectedNode();
+  mitk::Image::ConstPointer selectedImage = dynamic_cast<mitk::Image*>(selectedNode->GetData());
+  if (selectedImage.IsNull())
+  {
+    return;
+  }
+
+  ResetGeometryAction::Run(workbenchPartSite, selectedImage->GetTimeGeometry(), baseRenderer);
+}
diff --git a/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeResetGeometryAction.h b/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeResetGeometryAction.h
new file mode 100644
index 0000000000..8bd5f8295a
--- /dev/null
+++ b/Plugins/org.mitk.gui.qt.application/src/QmitkDataNodeResetGeometryAction.h
@@ -0,0 +1,49 @@
+/*============================================================================
+
+The Medical Imaging Interaction Toolkit (MITK)
+
+Copyright (c) German Cancer Research Center (DKFZ)
+All rights reserved.
+
+Use of this source code is governed by a 3-clause BSD license that can be
+found in the LICENSE file.
+
+============================================================================*/
+
+#ifndef QMITKDATANODERESETGEOMETRYACTION_H
+#define QMITKDATANODERESETGEOMETRYACTION_H
+
+#include <org_mitk_gui_qt_application_Export.h>
+
+#include <QmitkAbstractDataNodeAction.h>
+
+// qt
+#include <QAction>
+
+namespace ResetGeometryAction
+{
+  MITK_QT_APP void Run(berry::IWorkbenchPartSite::Pointer workbenchPartSite,
+                       const QList<mitk::DataNode::Pointer>& selectedNodes = QList<mitk::DataNode::Pointer>(),
+                       mitk::BaseRenderer* baseRenderer = nullptr);
+}
+
+class MITK_QT_APP QmitkDataNodeResetGeometryAction : public QAction, public QmitkAbstractDataNodeAction
+{
+  Q_OBJECT
+
+public:
+
+  QmitkDataNodeResetGeometryAction(QWidget* parent, berry::IWorkbenchPartSite::Pointer workbenchPartSite);
+  QmitkDataNodeResetGeometryAction(QWidget* parent, berry::IWorkbenchPartSite* workbenchPartSite);
+
+private Q_SLOTS:
+
+  void OnActionTriggered(bool);
+
+protected:
+
+  void InitializeAction() override;
+
+};
+
+#endif // QMITKDATANODEREINITVIEWACTION_H