Index: code/branches/hud/bin/hud/hud.oxh
===================================================================
--- code/branches/hud/bin/hud/hud.oxh	(revision 1595)
+++ code/branches/hud/bin/hud/hud.oxh	(revision 1598)
@@ -1,6 +1,6 @@
 <HUD name="OrxonoxHUD">
-  <HUDSpeedBar name ="SpeedBar1" size=0.35,0.2 scroll=-0.6,-1.0 value=0 />
-  <HUDFPSText name="FPSText" size = 0.043,0.043 scroll=-0.93,0.9 font="Monofur" caption="Frames per second: " />
-  <HUDRTRText name="RTRText" size = 0.043,0.043 scroll=-0.93,0.8 font="Monofur" caption="Render time ratio: " />
+  <HUDSpeedBar name ="SpeedBar1" size=0.35,0.05 position=0.02,0.98 origin=0,1 value=0 />
+  <HUDFPSText name="FPSText" size = 0.043,0.043 position=-0.05,0.05 font="Monofur" caption="Frames per second: " />
+  <HUDRTRText name="RTRText" size = 0.043,0.043 position=-0.05,0.2 font="Monofur" caption="Render time ratio: " />
   <Navigation name="Navigation" correctAspect=true font="Monofur" navmarkersize=0.03,0.03 />
 </HUD>
Index: code/branches/hud/src/orxonox/hud/HUDBar.cc
===================================================================
--- code/branches/hud/src/orxonox/hud/HUDBar.cc	(revision 1595)
+++ code/branches/hud/src/orxonox/hud/HUDBar.cc	(revision 1598)
@@ -53,5 +53,5 @@
 
         barWidth_s = 0.88f;
-        barHeight_s = 0.3f;
+        barHeight_s = 1.0f;
         barOffsetLeft_s = 0.06f;
         barOffsetTop_s = 0.0f;
@@ -82,5 +82,5 @@
             this->background_->setMaterialName("Orxonox/BarBackground");
             this->background_->setMetricsMode(GMM_RELATIVE);
-            this->background_->setDimensions(1.0f, 0.3f);
+            this->background_->setDimensions(1.0f, 1.0f);
             this->background_->setPosition(0.0f, 0.0f);
             this->overlay_->add2D(this->background_);
Index: code/branches/hud/src/orxonox/hud/HUDOverlay.cc
===================================================================
--- code/branches/hud/src/orxonox/hud/HUDOverlay.cc	(revision 1595)
+++ code/branches/hud/src/orxonox/hud/HUDOverlay.cc	(revision 1598)
@@ -43,6 +43,9 @@
     , windowAspectRatio_(1.0f)
     , bCorrectAspect_(false)
-    , size_(1.0f)
-    , sizeCorrection_(1.0f)
+    , size_(1.0f, 1.0f)
+    , sizeCorrection_(1.0f, 1.0f)
+    , angle_(0.0f)
+    , position_(0.0f, 0.0f)
+    , origin_(0.5f, 0.5f)
   {
     RegisterObject(HUDOverlay);
@@ -62,8 +65,9 @@
     }
 
+    XMLPortParam(HUDOverlay, "correctAspect", setAspectCorrection, getAspectCorrection, xmlElement, mode);
     XMLPortParam(HUDOverlay, "size", setSize, getSize, xmlElement, mode);
-    XMLPortParam(HUDOverlay, "correctAspect", setAspectCorrection, getAspectCorrection, xmlElement, mode);
-    XMLPortParam(HUDOverlay, "scroll", setScroll, getScroll, xmlElement, mode);
     XMLPortParam(HUDOverlay, "rotation", setRotation, getRotation, xmlElement, mode);
+    XMLPortParam(HUDOverlay, "origin", setOrigin, getOrigin, xmlElement, mode);
+    XMLPortParam(HUDOverlay, "position", setPosition, getPosition, xmlElement, mode);
 
     if (mode == XMLPort::LoadObject)
@@ -124,6 +128,24 @@
   void HUDOverlay::sizeChanged()
   {
-    this->overlay_->setScale(size_.x * sizeCorrection_.x, size_.x * sizeCorrection_.y);
+    this->overlay_->setScale(size_.x * sizeCorrection_.x, size_.y * sizeCorrection_.y);
   }
 
+  /**
+    @remarks
+      This function can be overriden by any derivative.
+  */
+  void HUDOverlay::angleChanged()
+  {
+    this->overlay_->setRotate(this->angle_);
+  }
+
+  /**
+    @remarks
+      This function can be overriden by any derivative.
+  */
+  void HUDOverlay::positionChanged()
+  {
+    Vector2 scroll = (position_ - 0.5 - size_ * (origin_ - 0.5)) * 2.0;
+    this->overlay_->setScroll(scroll.x, -scroll.y);
+  }
 }
Index: code/branches/hud/src/orxonox/hud/HUDOverlay.h
===================================================================
--- code/branches/hud/src/orxonox/hud/HUDOverlay.h	(revision 1595)
+++ code/branches/hud/src/orxonox/hud/HUDOverlay.h	(revision 1598)
@@ -50,21 +50,27 @@
       bool getAspectCorrection() { return this->bCorrectAspect_; }
 
-      /** Sets the scrolling factor of this overlay. */
-      void setScroll(Vector2 scroll) { overlay_->setScroll(scroll.x, scroll.y); }
+      /** Sets the position of this overlay. */
+      void setPosition(Vector2 pos) { this->position_ = pos; this->positionChanged(); }
 
-      /** Gets the current scroll value */
-      Vector2 getScroll() const { return Vector2(overlay_->getScrollX(), overlay_->getScrollY()); }
+      /** Gets the current position. */
+      Vector2 getPosition() const { return this->position_; }
 
       /** Scrolls the overlay by the offsets provided. */
-      void scroll(Vector2 scroll) { overlay_->scroll(scroll.x, scroll.y); }
+      void scroll(Vector2 scroll) { this->position_ += scroll; this->positionChanged(); }
+
+      /** Sets the origin point of this overlay. */
+      void setOrigin(Vector2 pos) { this->origin_ = pos; this->positionChanged(); }
+
+      /** Gets the origin point of this overlay */
+      Vector2 getOrigin() const { return this->origin_; }
 
       /** Sets the rotation applied to this overlay.*/
-      void setRotation(const Ogre::Radian& angle) { overlay_->setRotate(angle); }
+      void setRotation(const Ogre::Radian& angle) { this->angle_ = angle; this->angleChanged(); }
 
       /** Gets the rotation applied to this overlay, in degrees.*/
-      const Radian& getRotation() const { return overlay_->getRotate(); }
+      const Radian& getRotation() const { return this->angle_; }
 
       /** Adds the passed in angle to the rotation applied to this overlay. */
-      void rotate(const Radian& angle) { overlay_->rotate(angle); }
+      void rotate(const Radian& angle) { this->angle_ += angle; this->angleChanged(); }
 
       /** Sets the scaling factor of this overlay. */
@@ -86,4 +92,6 @@
       virtual void changedVisibility();
       virtual void sizeChanged();
+      virtual void angleChanged();
+      virtual void positionChanged();
       float getWindowAspectRatio() { return windowAspectRatio_; } 
 
@@ -97,4 +105,7 @@
       Vector2 size_;
       Vector2 sizeCorrection_;
+      Radian angle_;
+      Vector2 position_;
+      Vector2 origin_;
 
       static unsigned int hudOverlayCounter_s;
Index: code/branches/hud/src/orxonox/hud/Navigation.h
===================================================================
--- code/branches/hud/src/orxonox/hud/Navigation.h	(revision 1595)
+++ code/branches/hud/src/orxonox/hud/Navigation.h	(revision 1598)
@@ -59,4 +59,6 @@
     protected:
       virtual void sizeChanged();
+      virtual void angleChanged() { }
+      virtual void positionChanged() { }
 
       private:
