Index: branches/gui/src/lib/event/event_handler.cc
===================================================================
--- branches/gui/src/lib/event/event_handler.cc	(revision 7924)
+++ branches/gui/src/lib/event/event_handler.cc	(revision 7925)
@@ -337,5 +337,5 @@
   else
   {
-    SDL_WM_GrabInput(SDL_GRAB_ON);
+    //SDL_WM_GrabInput(SDL_GRAB_ON);
     SDL_ShowCursor(SDL_DISABLE);
   }
Index: branches/gui/src/lib/gui/gl_gui/glgui_button.h
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_button.h	(revision 7924)
+++ branches/gui/src/lib/gui/gl_gui/glgui_button.h	(revision 7925)
@@ -39,10 +39,9 @@
     void setLabel(const std::string& label);
 
-    virtual void resize() = 0;
-
     virtual void draw() const;
 
     private:
       void init();
+
 
 
Index: branches/gui/src/lib/gui/gl_gui/glgui_checkbutton.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_checkbutton.cc	(revision 7924)
+++ branches/gui/src/lib/gui/gl_gui/glgui_checkbutton.cc	(revision 7925)
@@ -62,4 +62,7 @@
     this->label.setRelCoor2D(25, 5);
     this->setSize2D(this->label.getSizeX2D() + 30, this->label.getSizeY2D() + 10);
+    GLGuiWidget::resize();
+    this->frontRect().setTopLeft(1, 1);
+    this->frontRect().setSize(this->getSizeX2D() -2, this->getSizeY2D() -2);
   }
 
@@ -72,4 +75,6 @@
   }
 
+
+
   /**
    * @brief draws the GLGuiPushButton
@@ -81,13 +86,9 @@
 
     this->frontMaterial().select();
-    glBegin(GL_QUADS);
-
-    glTexCoord2i(0,0); glVertex2d(1, 1);
-    glTexCoord2i(0,1); glVertex2d(1, this->getSizeY2D() - 1);
-    glTexCoord2i(1,1); glVertex2d(this->getSizeX2D() - 1, this->getSizeY2D() -1);
-    glTexCoord2i(1,0); glVertex2d(this->getSizeX2D() - 1, 1);
+    this->drawRect(this->frontRect());
 
     if (this->bActive)
     {
+      glBegin(GL_QUADS);
       glColor3f( 1, 1 ,1);
       glTexCoord2i(0,0); glVertex2d(8, 8);
@@ -117,4 +118,5 @@
     else
     {
+      glBegin(GL_QUADS);
       glColor3f(0, 0, 0);
       glTexCoord2i(0,0); glVertex2d(8, 8);
@@ -125,8 +127,5 @@
     }
 
-
     this->endDraw();
-    //   this->label->draw();
-    //  printf("test");
   }
 }
Index: branches/gui/src/lib/gui/gl_gui/glgui_checkbutton.h
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_checkbutton.h	(revision 7924)
+++ branches/gui/src/lib/gui/gl_gui/glgui_checkbutton.h	(revision 7925)
@@ -26,5 +26,4 @@
     virtual ~GLGuiCheckButton();
 
-    virtual void resize();
     virtual void released();
 
@@ -35,4 +34,7 @@
     virtual void draw() const;
     virtual void update() {};
+
+  protected:
+    virtual void resize();
 
   private:
Index: branches/gui/src/lib/gui/gl_gui/glgui_cursor.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_cursor.cc	(revision 7924)
+++ branches/gui/src/lib/gui/gl_gui/glgui_cursor.cc	(revision 7925)
@@ -64,4 +64,5 @@
     this->color = 0.0f;
 
+    this->resize();
   }
 
@@ -88,5 +89,5 @@
 
 
-      this->setAbsCoor2D(newPos);
+      this->setAbsCoorSoft2D(newPos, 20);
       movement = Vector2D();
     }
Index: branches/gui/src/lib/gui/gl_gui/glgui_pushbutton.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_pushbutton.cc	(revision 7924)
+++ branches/gui/src/lib/gui/gl_gui/glgui_pushbutton.cc	(revision 7925)
@@ -45,6 +45,9 @@
   void GLGuiPushButton::resize()
   {
-    this->label.setRelCoor2D(5, 5);
+    this->label.setRelCoor2D(25, 5);
     this->setSize2D(this->label.getSizeX2D() + 10, this->label.getSizeY2D() + 10);
+    GLGuiWidget::resize();
+    this->frontRect().setTopLeft(1, 1);
+    this->frontRect().setSize(this->getSizeX2D() -2, this->getSizeY2D() -2);
   }
 
Index: branches/gui/src/lib/gui/gl_gui/glgui_pushbutton.h
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_pushbutton.h	(revision 7924)
+++ branches/gui/src/lib/gui/gl_gui/glgui_pushbutton.h	(revision 7925)
@@ -27,6 +27,4 @@
 
 
-    virtual void resize();
-
     virtual void receivedFocus();
     virtual void removedFocus();
@@ -37,4 +35,8 @@
     virtual void draw() const;
     virtual void update();
+  protected:
+    virtual void resize();
+
+
   private:
     void init();
Index: branches/gui/src/lib/gui/gl_gui/glgui_widget.cc
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_widget.cc	(revision 7924)
+++ branches/gui/src/lib/gui/gl_gui/glgui_widget.cc	(revision 7925)
@@ -104,4 +104,11 @@
   }
 
+
+  void GLGuiWidget::resize()
+  {
+    this->backRect().setSize(this->getSize2D());
+  }
+
+
   void GLGuiWidget::click()
   {
@@ -189,4 +196,5 @@
   }
 
+
   void GLGuiWidget::hide()
   {
@@ -195,14 +203,11 @@
 
 
+  /**
+   * USE THIS FUNCTION ONLY FROM DERIVED CLASS
+   */
   void GLGuiWidget::draw() const
   {
     this->backMaterial().select();
-
-    glBegin(GL_QUADS);
-    glTexCoord2i(0,0); glVertex2d(0, 0);
-    glTexCoord2i(0,1); glVertex2d(0, this->getSizeY2D());
-    glTexCoord2i(1,1); glVertex2d(this->getSizeX2D(), this->getSizeY2D());
-    glTexCoord2i(1,0); glVertex2d(this->getSizeX2D(), 0);
-    glEnd();
+    this->drawRect(this->backRect());
   }
 
Index: branches/gui/src/lib/gui/gl_gui/glgui_widget.h
===================================================================
--- branches/gui/src/lib/gui/gl_gui/glgui_widget.h	(revision 7924)
+++ branches/gui/src/lib/gui/gl_gui/glgui_widget.h	(revision 7925)
@@ -81,4 +81,5 @@
 
 
+
     /// CLICK
     void click();
@@ -86,7 +87,4 @@
     bool clickable() const { return this->_clickable; };
     void setClickable(bool clickable = true) { this->_clickable = clickable; };
-
-    virtual void update() {};
-    virtual void draw() const;
 
 
@@ -102,5 +100,5 @@
     const Rect2D& frontRect() const { return this->_frontRect; };
 
-    inline void drawRect(const Rect2D& rect) {
+    inline void drawRect(const Rect2D& rect) const {
       glBegin(GL_QUADS);
       glTexCoord2i(0,0); glVertex2d(rect.left(), rect.top());
@@ -111,4 +109,8 @@
     }
 
+
+    virtual void update() {};
+    virtual void draw() const;
+
     /** @param the Event to process. @returns true if the Event has been consumed*/
     virtual bool processEvent(const Event& event) { };
@@ -117,6 +119,12 @@
     DeclareSignal(testSignal, ());
 
+
+
   protected:
-        // if something was clickt on the GUI-widget.
+
+    /// LOOKS
+    virtual void resize();
+
+    // if something was clickt on the GUI-widget.
     virtual void clicked();
     virtual void released();
Index: branches/gui/src/lib/math/rect2D.h
===================================================================
--- branches/gui/src/lib/math/rect2D.h	(revision 7924)
+++ branches/gui/src/lib/math/rect2D.h	(revision 7925)
@@ -83,7 +83,11 @@
   inline void setRight(float right) { _bottomRight.x = right; };
   /** @param topLeft the top left corner of the Rectangle */
-  void setTopLeft(const Vector2D& topLeft) { _topLeft = topLeft; };
+  inline void setTopLeft(const Vector2D& topLeft) { _topLeft = topLeft; };
+  /** @param x the left border of the Rectangle @param y the top border */
+  inline void setTopLeft(float x, float y) { this->setTopLeft(Vector2D(x,y)); };
   /** @param bottomRight the lower right corner of the Rectangle */
-  void setBottomRight(const Vector2D& bottomRight) { _bottomRight = bottomRight; };
+  inline void setBottomRight(const Vector2D& bottomRight) { _bottomRight = bottomRight; };
+  /** @param x the right border of the Rectangle @param y the bottom border */
+  inline void setBottomRight(float x, float y) { this->setBottomRight(Vector2D(x,y)); };
 
   void setWidth(float width);
Index: branches/gui/src/story_entities/simple_game_menu.cc
===================================================================
--- branches/gui/src/story_entities/simple_game_menu.cc	(revision 7924)
+++ branches/gui/src/story_entities/simple_game_menu.cc	(revision 7925)
@@ -66,5 +66,4 @@
   /// GUI
   ///(this is as modular as it is possible).
-  /*
   OrxGui::GLGuiPushButton* pb = new OrxGui::GLGuiPushButton("PUSH ME");
   pb->connectSignal(OrxGui::Signal_release, this, createExecutor<SimpleGameMenu>(&SimpleGameMenu::enterGui));
@@ -74,5 +73,4 @@
   OrxGui::GLGuiHandler::getInstance()->activateCursor();
   OrxGui::GLGuiHandler::getInstance()->activate();
-  */
   /////
 
