diff --git a/etc/doxygen/pages/GuiPlugins.dox b/etc/doxygen/pages/GuiPlugins.dox
index 8f8fe7c3b4285b1cb05e9afc6fc2dad92a502bd2..5bde34684bc76514eb49696b35b4e2e0ce0946a6 100644
--- a/etc/doxygen/pages/GuiPlugins.dox
+++ b/etc/doxygen/pages/GuiPlugins.dox
@@ -18,4 +18,6 @@ The following Gui Plugins are available:
 \subpage RobotAPI-GuiPlugins-ViewSelection
 
 \subpage ArmarXGui-GuiPlugins-DebugDrawerViewer
+
+\subpage ArmarXGui-GuiPlugins-LaserScannerPlugin
 */
diff --git a/source/RobotAPI/gui-plugins/LaserScannerPlugin/LaserScannerPluginWidgetController.cpp b/source/RobotAPI/gui-plugins/LaserScannerPlugin/LaserScannerPluginWidgetController.cpp
index 036f956a402af28bbddb8ff42fe9dc565491a18b..4ed9add233d600fe99badbeaa85c17791c959e41 100644
--- a/source/RobotAPI/gui-plugins/LaserScannerPlugin/LaserScannerPluginWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/LaserScannerPlugin/LaserScannerPluginWidgetController.cpp
@@ -134,7 +134,7 @@ void LaserScannerPluginWidgetController::onNewSensorValuesReported()
     int outerR = std::min(view->width() / 2, view->height() / 2);
     scene.addEllipse(-outerR, -outerR, 2 * outerR, 2 * outerR, QPen(QColor(255, 255, 255)));
     int r = outerR - 10;
-    scene.addEllipse(-r, -r, 2 * r, 2 * r, QPen(QColor(200, 200, 200)));
+    //scene.addEllipse(-r, -r, 2 * r, 2 * r, QPen(QColor(200, 200, 200)));
     QColor stepColor(QColor::fromRgb(100, 100, 255));
     QPen stepPen(stepColor);
     QBrush stepBrush(stepColor);
@@ -148,9 +148,34 @@ void LaserScannerPluginWidgetController::onNewSensorValuesReported()
     };
 
     LaserScan& scan = scans[deviceName];
+    float maxDistance = 1000.0f;
     for (LaserScanStep & step : scan)
     {
-        line(step.angle, step.distance / 10000.0f);
+        if (step.distance > maxDistance)
+        {
+            maxDistance = step.distance;
+        }
+    }
+    float ringDistance = 1000.0f;
+    int numberOfRings = (std::size_t)std::ceil(maxDistance / ringDistance);
+    std::deque<int>& history = numberOfRingsHistory[deviceName];
+    history.push_back(numberOfRings);
+    if (history.size() > 256)
+    {
+        history.pop_front();
+    }
+    int maxNumberOfRings = *std::max_element(history.begin(), history.end());
+    float outerRadius = maxNumberOfRings * ringDistance;
+
+    for (LaserScanStep & step : scan)
+    {
+        line(step.angle, step.distance / outerRadius);
+    }
+
+    for (int ringIndex = 1; ringIndex <= maxNumberOfRings; ++ringIndex)
+    {
+        float ri =  1.0f * ringIndex / maxNumberOfRings * r;
+        scene.addEllipse(-ri, -ri, 2 * ri, 2 * ri, QPen(QColor(200, 200, 200)));
     }
 
     view->fitInView(scene.itemsBoundingRect(), Qt::KeepAspectRatio);
diff --git a/source/RobotAPI/gui-plugins/LaserScannerPlugin/LaserScannerPluginWidgetController.h b/source/RobotAPI/gui-plugins/LaserScannerPlugin/LaserScannerPluginWidgetController.h
index a98917b3e7ce0caed80f6151d1c6e6816e893b9c..f0310dba015af5435c0b9cbab8a85e09b473fe6d 100644
--- a/source/RobotAPI/gui-plugins/LaserScannerPlugin/LaserScannerPluginWidgetController.h
+++ b/source/RobotAPI/gui-plugins/LaserScannerPlugin/LaserScannerPluginWidgetController.h
@@ -35,10 +35,7 @@ namespace armarx
 {
     /**
     \page ArmarXGui-GuiPlugins-LaserScannerPlugin LaserScannerPlugin
-    \brief The LaserScannerPlugin allows visualizing ...
-
-    \image html LaserScannerPlugin.png
-    The user can
+    \brief The LaserScannerPlugin allows visualizing the raw sensor data captured from multiple laser scanners.
 
     API Documentation \ref LaserScannerPluginWidgetController
 
@@ -125,6 +122,7 @@ namespace armarx
 
         Mutex scanMutex;
         std::unordered_map<std::string, LaserScan> scans;
+        std::unordered_map<std::string, std::deque<int>> numberOfRingsHistory;
 
 
         QGraphicsScene scene;