diff --git a/Modules/QtWidgets/resource/GeometryDataIcon.svg b/Modules/QtWidgets/resource/GeometryDataIcon.svg
new file mode 100644
index 0000000000..090de6c5ef
--- /dev/null
+++ b/Modules/QtWidgets/resource/GeometryDataIcon.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg width="32" height="32" version="1.1" viewBox="0 0 8.4667 8.4667" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<metadata>
+<rdf:RDF>
+<cc:Work rdf:about="">
+<dc:format>image/svg+xml</dc:format>
+<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+</cc:Work>
+</rdf:RDF>
+</metadata>
+<g fill="none" stroke="#00ff00" stroke-width=".26458">
+<rect x=".39687" y="2.0607" width="6.009" height="6.009" rx="0" ry="0"/>
+<rect x="2.6642" y=".41117" width="5.3557" height="5.3557" rx="0" ry="0"/>
+<path d="m2.6175 0.38741-2.2732 1.6487" fill="#000"/>
+<path d="m8.0199 0.41117-1.614 1.6496" fill="#000"/>
+<path d="m8.0452 5.8174-1.614 2.3101" fill="#000"/>
+<path d="m2.6642 5.7669-2.2673 2.3029" fill="#000"/>
+</g>
+</svg>
diff --git a/Modules/QtWidgets/resource/Qmitk.qrc b/Modules/QtWidgets/resource/Qmitk.qrc
index e2c136c4b7..f284857d3e 100644
--- a/Modules/QtWidgets/resource/Qmitk.qrc
+++ b/Modules/QtWidgets/resource/Qmitk.qrc
@@ -1,35 +1,36 @@
 <RCC>
     <qresource prefix="/Qmitk">
         <file>Binaerbilder_48.png</file>
         <file>Images_48.png</file>
         <file>PointSet_48.png</file>
         <file>Segmentation_48.png</file>
         <file>Surface_48.png</file>
         <file>mm_pointer.png</file>
         <file>mm_scroll.png</file>
         <file>mm_zoom.png</file>
         <file>mm_contrast.png</file>
         <file>mm_pan.png</file>
         <file>LabelSetImage_48.png</file>
 		<file>mwLayout.png</file>
 		<file>mwSynchronized.png</file>
 		<file>mwDesynchronized.png</file>
 		<file>mwMITK.png</file>
 		<file>mwPACS.png</file>
 		<file>star-solid.svg</file>
 		<file>history-solid.svg</file>
 		<file>tree_inspector.svg</file>
 		<file>list-solid.svg</file>
 		<file>favorite_add.svg</file>
 		<file>favorite_remove.svg</file>
 		<file>hourglass-half-solid.svg</file>
 		<file>times.svg</file>
 		<file>reset.svg</file>
 		<file>lock.svg</file>
 		<file>unlock.svg</file>
 		<file>invisible.svg</file>
 		<file>visible.svg</file>
 		<file>SegmentationTaskListIcon.svg</file>
 		<file>ROIIcon.svg</file>
+		<file>GeometryDataIcon.svg</file>
 	</qresource>
 </RCC>
diff --git a/Modules/QtWidgets/src/QmitkNodeDescriptorManager.cpp b/Modules/QtWidgets/src/QmitkNodeDescriptorManager.cpp
index 8e6fbaa887..ab142499b0 100644
--- a/Modules/QtWidgets/src/QmitkNodeDescriptorManager.cpp
+++ b/Modules/QtWidgets/src/QmitkNodeDescriptorManager.cpp
@@ -1,179 +1,183 @@
 /*============================================================================
 
 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 "QmitkNodeDescriptorManager.h"
 #include <memory>
 #include <mitkNodePredicateAnd.h>
 #include <mitkNodePredicateDataType.h>
 #include <mitkNodePredicateNot.h>
 #include <mitkNodePredicateProperty.h>
 #include <mitkProperties.h>
 #include <QmitkStyleManager.h>
 #include <QList>
 #include <QSet>
 
 QmitkNodeDescriptorManager* QmitkNodeDescriptorManager::GetInstance()
 {
   static QmitkNodeDescriptorManager instance;
   return &instance;
 }
 
 void QmitkNodeDescriptorManager::Initialize()
 {
   auto isImage = mitk::NodePredicateDataType::New("Image");
   AddDescriptor(new QmitkNodeDescriptor(tr("Image"), QString(":/Qmitk/Images_48.png"), isImage, this));
 
   auto isMultiComponentImage = mitk::NodePredicateAnd::New(isImage, mitk::NodePredicateProperty::New("Image.Displayed Component"));
   AddDescriptor(new QmitkNodeDescriptor(tr("MultiComponentImage"), QString(": / Qmitk / Images_48.png"), isMultiComponentImage, this));
 
   auto isBinary = mitk::NodePredicateProperty::New("binary", mitk::BoolProperty::New(true));
   auto isBinaryImage = mitk::NodePredicateAnd::New(isBinary, isImage);
   AddDescriptor(new QmitkNodeDescriptor(tr("ImageMask"), QString(":/Qmitk/Binaerbilder_48.png"), isBinaryImage, this));
 
   auto isLabelSetImage = mitk::NodePredicateDataType::New("LabelSetImage");
   AddDescriptor(new QmitkNodeDescriptor(tr("LabelSetImage"), QString(":/Qmitk/LabelSetImage_48.png"), isLabelSetImage, this));
 
   auto segmentationTaskListIcon = QmitkStyleManager::ThemeIcon(QStringLiteral(":/Qmitk/SegmentationTaskListIcon.svg"));
   auto isSegmentationTaskList = mitk::NodePredicateDataType::New("SegmentationTaskList");
   AddDescriptor(new QmitkNodeDescriptor("SegmentationTaskList", segmentationTaskListIcon, isSegmentationTaskList, this));
 
   auto roiIcon = QmitkStyleManager::ThemeIcon(QStringLiteral(":/Qmitk/ROIIcon.svg"));
   auto isROI = mitk::NodePredicateDataType::New("ROI");
   AddDescriptor(new QmitkNodeDescriptor("ROI", roiIcon, isROI, this));
 
+  auto geometryDataIcon = QmitkStyleManager::ThemeIcon(QStringLiteral(":/Qmitk/GeometryDataIcon.svg"));
+  auto isGeometryData = mitk::NodePredicateDataType::New("GeometryData");
+  AddDescriptor(new QmitkNodeDescriptor("GeometryData", geometryDataIcon, isGeometryData, this));
+
   auto isPointSet = mitk::NodePredicateDataType::New("PointSet");
   AddDescriptor(new QmitkNodeDescriptor(tr("PointSet"), QString(":/Qmitk/PointSet_48.png"), isPointSet, this));
 
   auto isSurface = mitk::NodePredicateDataType::New("Surface");
   AddDescriptor(new QmitkNodeDescriptor(tr("Surface"), QString(":/Qmitk/Surface_48.png"), isSurface, this));
 
   auto isNotBinary = mitk::NodePredicateNot::New(isBinary);
   auto isNoneBinaryImage = mitk::NodePredicateAnd::New(isImage, isNotBinary);
   AddDescriptor(new QmitkNodeDescriptor(tr("NoneBinaryImage"), QString(":/Qmitk/Images_48.png"), isNoneBinaryImage, this));
 }
 
 void QmitkNodeDescriptorManager::AddDescriptor(QmitkNodeDescriptor* descriptor)
 {
   descriptor->setParent(this);
   m_NodeDescriptors.push_back(descriptor);
 }
 
 void QmitkNodeDescriptorManager::RemoveDescriptor(QmitkNodeDescriptor* descriptor)
 {
   int index = m_NodeDescriptors.indexOf(descriptor);
 
   if (index != -1)
   {
     m_NodeDescriptors.removeAt(index);
     descriptor->setParent(nullptr);
     delete descriptor;
   }
 }
 
 QmitkNodeDescriptor* QmitkNodeDescriptorManager::GetDescriptor(const mitk::DataNode* node) const
 {
   QmitkNodeDescriptor* descriptor = m_UnknownDataNodeDescriptor;
 
   for (QList<QmitkNodeDescriptor *>::const_iterator it = m_NodeDescriptors.begin(); it != m_NodeDescriptors.end(); ++it)
   {
     if ((*it)->CheckNode(node))
       descriptor = *it;
   }
 
   return descriptor;
 }
 
 QmitkNodeDescriptor* QmitkNodeDescriptorManager::GetDescriptor(const QString& className) const
 {
   QmitkNodeDescriptor* descriptor = nullptr;
 
   if (className == "Unknown")
   {
     return m_UnknownDataNodeDescriptor;
   }
   else
   {
     for (QList<QmitkNodeDescriptor *>::const_iterator it = m_NodeDescriptors.begin(); it != m_NodeDescriptors.end(); ++it)
     {
       if ((*it)->GetNameOfClass() == className)
         descriptor = *it;
     }
   }
 
   return descriptor;
 }
 
 QList<QAction*> QmitkNodeDescriptorManager::GetActions(const mitk::DataNode* node) const
 {
   QList<QAction*> actions = m_UnknownDataNodeDescriptor->GetBatchActions();
   actions.append(m_UnknownDataNodeDescriptor->GetActions());
   QmitkNodeDescriptor* lastDescriptor = m_UnknownDataNodeDescriptor;
 
   for (QList<QmitkNodeDescriptor *>::const_iterator it = m_NodeDescriptors.begin(); it != m_NodeDescriptors.end(); ++it)
   {
     if ((*it)->CheckNode(node))
     {
       actions.append(lastDescriptor->GetSeparator());
       lastDescriptor = *it;
       actions.append(lastDescriptor->GetBatchActions());
       actions.append(lastDescriptor->GetActions());
     }
   }
 
   return actions;
 }
 
 QList<QAction*> QmitkNodeDescriptorManager::GetActions(const QList<mitk::DataNode::Pointer>& nodes) const
 {
   QList<QAction*> actions = m_UnknownDataNodeDescriptor->GetBatchActions();
   QmitkNodeDescriptor* lastDescriptor = m_UnknownDataNodeDescriptor;
 
   // find all descriptors for the nodes (unique)
   QSet<QmitkNodeDescriptor*> nodeDescriptors;
   for (const auto& node : nodes)
   {
     for (QList<QmitkNodeDescriptor*>::const_iterator it = m_NodeDescriptors.begin(); it != m_NodeDescriptors.end(); ++it)
     {
       if ((*it)->CheckNode(node))
       {
         nodeDescriptors.insert(*it);
       }
     }
   }
 
   // add all actions for the found descriptors
   for (const auto& nodeDescriptor : nodeDescriptors)
   {
     actions.append(lastDescriptor->GetSeparator());
     lastDescriptor = nodeDescriptor;
     actions.append(lastDescriptor->GetBatchActions());
   }
 
   return actions;
 }
 
 QmitkNodeDescriptorManager::QmitkNodeDescriptorManager()
   : m_UnknownDataNodeDescriptor(new QmitkNodeDescriptor("Unknown", QString(":/Qmitk/DataTypeUnknown_48.png"), nullptr, this))
 {
   Initialize();
 }
 
 QmitkNodeDescriptorManager::~QmitkNodeDescriptorManager()
 {
   // delete m_UnknownDataNodeDescriptor;
   // qDeleteAll(m_NodeDescriptors);
 }
 
 QmitkNodeDescriptor *QmitkNodeDescriptorManager::GetUnknownDataNodeDescriptor() const
 {
   return m_UnknownDataNodeDescriptor;
 }