Index: code/trunk/src/modules/overlays/GUIOverlay.cc
===================================================================
--- code/trunk/src/modules/overlays/GUIOverlay.cc	(revision 5978)
+++ code/trunk/src/modules/overlays/GUIOverlay.cc	(revision 5980)
@@ -62,7 +62,8 @@
     {
         SUPER(GUIOverlay, changedVisibility);
-
+        
         //Setting player now.
-        GUIManager::getInstance().setPlayer(this->guiName_, (orxonox_cast<ControllableEntity*>(this->getOwner()))->getPlayer());
+        if( this->getOwner() )
+            GUIManager::getInstance().setPlayer(this->guiName_, (orxonox_cast<ControllableEntity*>(this->getOwner()))->getPlayer());
 
         if (this->isVisible())
Index: code/trunk/src/modules/overlays/stats/CreateLines.cc
===================================================================
--- code/trunk/src/modules/overlays/stats/CreateLines.cc	(revision 5978)
+++ code/trunk/src/modules/overlays/stats/CreateLines.cc	(revision 5980)
@@ -87,4 +87,19 @@
         this->background_->setVisible(visible);
     }
+    void CreateLines::changedVisibility()
+    {
+        this->scoreText_->changedVisibility();
+        this->deathsText_->changedVisibility();
+        this->playerNameText_->changedVisibility();
+        this->background_->changedVisibility();
+    }
+    
+    void CreateLines::setOverlayGroup( OverlayGroup* group )
+    {
+        this->scoreText_->setOverlayGroup( group );
+        this->deathsText_->setOverlayGroup( group );
+        this->playerNameText_->setOverlayGroup( group );
+        this->background_->setOverlayGroup( group );
+    }
 
     /**
Index: code/trunk/src/modules/overlays/stats/CreateLines.h
===================================================================
--- code/trunk/src/modules/overlays/stats/CreateLines.h	(revision 5978)
+++ code/trunk/src/modules/overlays/stats/CreateLines.h	(revision 5980)
@@ -44,4 +44,6 @@
 
         void setVisibility(bool);
+        void changedVisibility();
+        void setOverlayGroup( OverlayGroup* group );
 
         //void setNumberOfColumns(unsigned int numberOfColumns, unsigned int lineIndex);
Index: code/trunk/src/modules/overlays/stats/Scoreboard.cc
===================================================================
--- code/trunk/src/modules/overlays/stats/Scoreboard.cc	(revision 5978)
+++ code/trunk/src/modules/overlays/stats/Scoreboard.cc	(revision 5980)
@@ -69,5 +69,5 @@
 
         for (unsigned int i = 0; i < this->lines_.size(); ++i)
-            this->lines_[i]->setVisibility(this->isVisible());
+            this->lines_[i]->changedVisibility();
     }
 
@@ -89,4 +89,5 @@
             CreateLines* lines = new CreateLines(leftOffset, topOffset + (distance + height) * lines_.size(), width, height);
             lines->setVisibility(this->isVisible());
+            lines->setOverlayGroup( this->getOverlayGroup() );
             this->lines_.push_back(lines);
         }
Index: code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 5978)
+++ code/trunk/src/orxonox/overlays/OrxonoxOverlay.cc	(revision 5980)
@@ -48,4 +48,6 @@
 #include "core/ConsoleCommand.h"
 
+#include "OverlayGroup.h"
+
 namespace orxonox
 {
@@ -165,8 +167,11 @@
     void OrxonoxOverlay::changedVisibility()
     {
+        SUPER( OrxonoxOverlay, changedVisibility );
+        
         if (!this->overlay_)
             return;
 
-        if (this->isVisible())
+        // only set to visible if corresponding OverlayGroup is also visible
+        if (this->isVisible() && (!this->getOverlayGroup() || this->getOverlayGroup()->isVisible()) )
             this->overlay_->show();
         else
Index: code/trunk/src/orxonox/overlays/OrxonoxOverlay.h
===================================================================
--- code/trunk/src/orxonox/overlays/OrxonoxOverlay.h	(revision 5978)
+++ code/trunk/src/orxonox/overlays/OrxonoxOverlay.h	(revision 5980)
@@ -179,5 +179,6 @@
         inline OverlayGroup* getOverlayGroup() const
             { return this->group_; }
-        virtual void changedOverlayGroup() {}
+        virtual void changedOverlayGroup() 
+            { this->changedVisibility(); }
 
     protected:
Index: code/trunk/src/orxonox/overlays/OverlayGroup.cc
===================================================================
--- code/trunk/src/orxonox/overlays/OverlayGroup.cc	(revision 5978)
+++ code/trunk/src/orxonox/overlays/OverlayGroup.cc	(revision 5980)
@@ -105,5 +105,5 @@
     {
         hudElements_.insert(element);
-        element->setVisible(this->isVisible());
+        element->setOverlayGroup( this );
         if (this->owner_)
             element->setOwner(this->owner_);
@@ -142,6 +142,8 @@
     void OverlayGroup::changedVisibility()
     {
-        for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
-            (*it)->setVisible(this->isVisible());
+        SUPER( OverlayGroup, changedVisibility );
+        
+        for (std::set<OrxonoxOverlay*>::iterator it = hudElements_.begin(); it != hudElements_.end(); ++it)
+            (*it)->changedVisibility(); //inform all Child Overlays that our visibility has changed
     }
 
