Index: branches/gui/src/lib/gui/gl_gui/glgui_handler.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_handler.cc	(revision 7938)
+++ branches/gui/src/lib/gui/gl_gui/glgui_handler.cc	(revision 7939)
@@ -150,4 +150,20 @@
   }
 
+  const Vector2D& GLGuiHandler::cursorPositionAbs() const
+  {
+    if (this->cursor)
+      return this->cursor->getAbsCoor2D();
+    else
+      return Vector2D::nullVector();
+  }
+  const Vector2D& GLGuiHandler::cursorPositionRel(const GLGuiWidget* const widget) const
+  {
+    assert (widget != NULL);
+    if (this->cursor)
+      return  this->cursor->getAbsCoor2D() - widget->getAbsCoor2D();
+    else
+      return Vector2D::nullVector();
+  }
+
 
   void GLGuiHandler::draw()
Index: branches/gui/src/lib/gui/gl_gui/glgui_handler.h
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_handler.h	(revision 7938)
+++ branches/gui/src/lib/gui/gl_gui/glgui_handler.h	(revision 7939)
@@ -31,4 +31,6 @@
 
     Vector2D cursorPositionOverFocusedWidget() const;
+    const Vector2D& cursorPositionAbs() const;
+    const Vector2D& cursorPositionRel(const GLGuiWidget* const widget) const;
 
     void activate();
Index: branches/gui/src/lib/gui/gl_gui/glgui_slider.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_slider.cc	(revision 7938)
+++ branches/gui/src/lib/gui/gl_gui/glgui_slider.cc	(revision 7939)
@@ -18,4 +18,6 @@
 #include "glgui_slider.h"
 #include "event_def.h"
+
+#include "glgui_handler.h"
 
 namespace OrxGui
@@ -149,10 +151,14 @@
   float GLGuiSlider::sliderPosition() const
   {
-    return (this->_value - this->_minValue)/( this->_maxValue - this->_minValue) * (this->getSizeX2D() - 4.0) + 2.0;
+    return (this->_value - this->_minValue)/( this->_maxValue - this->_minValue) *
+        (this->getSizeX2D() - 2.0*(borderSize() + _sliderWidth)) +
+        (borderSize() +_sliderWidth);
   }
 
   float GLGuiSlider::sliderValue(float position) const
   {
-    return (position - 2.0) / (this->getSizeX2D() - 4.0)  *( this->_maxValue - this->_minValue) +this->_minValue ;
+    return (position - (borderSize()+_sliderWidth)) / (this->getSizeX2D() - 2.0*(borderSize() + _sliderWidth))
+        *( this->_maxValue - this->_minValue) +
+        this->_minValue ;
   }
 
@@ -165,4 +171,12 @@
     }*/
 
+  void GLGuiSlider::tick(float dt)
+  {
+/*    this->setValue(this->value() + dt);
+    if (this->value() >= this->max())
+    this->setValue(this->min());
+*/
+  }
+
   /**
    * @brief draws the GLGuiSlider
@@ -181,9 +195,10 @@
   }
 
+
   bool GLGuiSlider::processEvent( const Event& event )
   {
     if (this->grabbed && event.type == EV_MOUSE_MOTION)
     {
-      this->setValue(sliderValue(event.x - this->getAbsCoor2D().x));
+      this->setValue(sliderValue(GLGuiHandler::getInstance()->cursorPositionRel(this).x));
       return true;
     }
Index: branches/gui/src/lib/gui/gl_gui/glgui_slider.h
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_slider.h	(revision 7938)
+++ branches/gui/src/lib/gui/gl_gui/glgui_slider.h	(revision 7939)
@@ -44,5 +44,5 @@
 
 
-//    virtual void tick(float dt);
+    virtual void tick(float dt);
     virtual bool processEvent(const Event& event);
     virtual void draw() const;
Index: branches/gui/src/lib/math/vector.h
===================================================================
--- branches/gui/src/lib/math/vector.h	(revision 7938)
+++ branches/gui/src/lib/math/vector.h	(revision 7939)
@@ -32,9 +32,4 @@
 //! this is a small and performant 3D vector
 typedef float sVec3D[3];
-
-
-//! small and performant 2D vector
-typedef float sVec2D[2];
-
 
 
Index: branches/gui/src/lib/math/vector2D.h
===================================================================
--- branches/gui/src/lib/math/vector2D.h	(revision 7938)
+++ branches/gui/src/lib/math/vector2D.h	(revision 7939)
@@ -93,4 +93,7 @@
   void slerp(const Vector2D& v, float val) { *this += (*this - v) * val; }
 
+  /** @returns a Vector of (0,0) */
+  static const Vector2D& nullVector() { static Vector2D nullVector; return nullVector; };
+
   void debug() const;
 
Index: branches/gui/src/story_entities/simple_game_menu.cc
===================================================================
--- branches/gui/src/story_entities/simple_game_menu.cc	(revision 7938)
+++ branches/gui/src/story_entities/simple_game_menu.cc	(revision 7939)
@@ -101,6 +101,6 @@
 
   OrxGui::GLGuiSlider* slider = new OrxGui::GLGuiSlider();
-  slider->setRange(1, 10);
-  slider->setValue(5.0);
+  slider->setRange(-1, 10);
+  slider->setValue(slider->min());
   slider->show();
   slider->setAbsCoor2D(200, 270);
