Index: branches/gui/src/lib/graphics/text_engine/multi_line_text.cc
===================================================================
--- branches/gui/src/lib/graphics/text_engine/multi_line_text.cc	(revision 8418)
+++ branches/gui/src/lib/graphics/text_engine/multi_line_text.cc	(revision 8419)
@@ -76,8 +76,8 @@
   glActiveTexture(GL_TEXTURE0);
 
-  glColor4f(this->getColor().x, this->getColor().y, this->getColor().z, this->getBlending());
+  glColor4fv(&this->getColor()[0]);
   glEnable(GL_BLEND);
   glEnable(GL_TEXTURE_2D);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, GL_MODULATE );
 
Index: branches/gui/src/lib/graphics/text_engine/text.cc
===================================================================
--- branches/gui/src/lib/graphics/text_engine/text.cc	(revision 8418)
+++ branches/gui/src/lib/graphics/text_engine/text.cc	(revision 8419)
@@ -37,5 +37,4 @@
   this->size = textSize;
   this->setSizeY2D(size);
-  this->blending = TEXT_DEFAULT_BLENDING;
   this->color = TEXT_DEFAULT_COLOR;
 
@@ -73,6 +72,5 @@
           this->size == text.size &&
           this->font == text.font &&
-          this->color == text.color &&
-          this->blending == text.blending);
+          this->color == text.color);
 }
 
@@ -95,5 +93,4 @@
 {
   this->size = text.size;
-  this->blending = text.blending;
   this->color = text.color;
   this->setAlignment(text.getAlignment());
@@ -224,5 +221,5 @@
   // drawing this Text.
   // setting the Blending effects
-  glColor4f(this->color.x, this->color.y, this->color.z, this->blending);
+  glColor4fv(&this->color[0]);
 
 
@@ -231,5 +228,5 @@
   glEnable(GL_BLEND);
   glEnable(GL_TEXTURE_2D);
-  glBlendFunc(GL_SRC_ALPHA, GL_ONE);
+  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
   glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, GL_MODULATE );
 
@@ -285,5 +282,5 @@
 {
   PRINT(0)("=== TEXT: %s (with Font:'%s')  displaying %s ===\n", this->getName(), this->font->getName(), this->text.c_str());
-  PRINT(0)("Color: %0.2f %0.2f %0.2f\n", this->color.x, this->color.y, this->color.z);
-}
-
+  PRINT(0)("Color: r=%0.2f g=%0.2f b=%0.2f a=%0.2f\n", this->color.r(), this->color.g(), this->color.b(), this->color.a());
+}
+
Index: branches/gui/src/lib/graphics/text_engine/text.h
===================================================================
--- branches/gui/src/lib/graphics/text_engine/text.h	(revision 8418)
+++ branches/gui/src/lib/graphics/text_engine/text.h	(revision 8419)
@@ -8,4 +8,5 @@
 
 #include "element_2d.h"
+#include "color.h"
 
 #define  TEXT_ALIGN_LEFT             E2D_ALIGN_LEFT
@@ -13,6 +14,5 @@
 #define  TEXT_ALIGN_CENTER           E2D_ALIGN_CENTER
 #define  TEXT_ALIGN_SCREEN_CENTER    E2D_ALIGN_SCREEN_CENTER
-#define  TEXT_DEFAULT_COLOR          Vector(1.0, 1.0, 1.0)      //!< the default Color (white)
-#define  TEXT_DEFAULT_BLENDING       1.0f                       //!< the default blending of the text, (no blending at all)
+#define  TEXT_DEFAULT_COLOR          Color(1.0, 1.0, 1.0, 1.0f) //!< the default Color (white, fully visible)
 
 #define  TEXT_DEFAULT_ALIGNMENT      TEXT_ALIGN_LEFT            //!< default alignment
@@ -44,7 +44,9 @@
     void setFont(const std::string& fontFile, unsigned int renderSize);
     /** @param blending the blending intensity to set (between 0.0 and 1.0) */
-    inline void setBlending(float blending) { this->blending = blending; };
+    inline void setBlending(float blending) { this->color.a() = blending; };
     /** @param r red @param g green @param b blue @brief sets the Color of the Text to render (values in [0-1]) */
-    void setColor(float r, float g, float b) { this->color = Vector(r, g, b); };
+    void setColor(float r, float g, float b) { this->color = Color(r, g, b, this->color.a()); };
+    void setColor(float r, float g, float b, float a) { this->color = Color(r, g, b, a); };
+    void setColor(const Color& color) { this->color = color; };
     void setSize(float size);
 
@@ -57,7 +59,7 @@
     inline const Font* const getFont() const { return this->font; };
     /** @returns the Blending Value [0 invisible 1.0 full visible */
-    inline float getBlending() const { return this->blending; };
+    inline float getBlending() const { return this->color.a(); };
     /** @returns: a Vector(r,g,b) @brief: retrieve a Vector holding the Color of the Text */
-    inline const Vector& getColor() const { return this->color; };
+    inline const Color& getColor() const { return this->color; };
     /** @returns the Size of the Text */
     inline float getSize() const { return this->size; };
@@ -76,6 +78,5 @@
 
     std::string       text;           //!< The text to display
-    Vector            color;          //!< The color of the font.
-    float             blending;       //!< The blending intensity.
+    Color             color;          //!< The color of the font.
     float             size;           //!< The size of the Text.
 };
Index: branches/gui/src/lib/gui/gl/glgui_bar.cc
===================================================================
--- branches/gui/src/lib/gui/gl/glgui_bar.cc	(revision 8418)
+++ branches/gui/src/lib/gui/gl/glgui_bar.cc	(revision 8419)
@@ -46,5 +46,5 @@
     this->setClassID(CL_GLGUI_BAR, "GLGuiBar");
 
-    this->frontColor().setColor(1,1,1);
+    this->setFrontColor(Color(1,1,1));
 
     this->setSize2D(50, 10);
Index: branches/gui/src/lib/gui/gl/glgui_button.cc
===================================================================
--- branches/gui/src/lib/gui/gl/glgui_button.cc	(revision 8418)
+++ branches/gui/src/lib/gui/gl/glgui_button.cc	(revision 8419)
@@ -55,5 +55,5 @@
 
     this->_label.setFont("fonts/final_frontier.ttf", 20);
-    this->frontColor().setColor(1, 0, 0, 1.0);
+    this->setFrontColor(Color(1, 0, 0, 1.0));
 
     this->_label.setParent2D(this);
@@ -69,11 +69,18 @@
 
 
+  void GLGuiButton::updateFrontColor()
+  {
+    this->_label.setColor(this->frontColor());
+    printf("TEST Color is "); this->frontColor().debug();
+  }
 
   void GLGuiButton::clicking(const Vector2D& pos)
   {
+    GLGuiWidget::clicking(pos);
     emit(clicked());
   }
   void GLGuiButton::releasing(const Vector2D& pos)
   {
+    GLGuiWidget::releasing(pos);
     emit(released());
   }
Index: branches/gui/src/lib/gui/gl/glgui_button.h
===================================================================
--- branches/gui/src/lib/gui/gl/glgui_button.h	(revision 8418)
+++ branches/gui/src/lib/gui/gl/glgui_button.h	(revision 8419)
@@ -45,4 +45,6 @@
 
     protected:
+      virtual void updateFrontColor();
+
       virtual void clicking(const Vector2D& pos);
       virtual void releasing(const Vector2D& pos);
Index: branches/gui/src/lib/gui/gl/glgui_inputline.cc
===================================================================
--- branches/gui/src/lib/gui/gl/glgui_inputline.cc	(revision 8418)
+++ branches/gui/src/lib/gui/gl/glgui_inputline.cc	(revision 8419)
@@ -48,8 +48,8 @@
     this->setFocusable(true);
 
-    this->text.setParent2D(this);
-    this->text.setRelCoor2D(4,4);
-    this->text.setFont("fonts/final_frontier.ttf", 20);
-    this->text.setVisibility(false);
+    this->_text.setParent2D(this);
+    this->_text.setRelCoor2D(4,4);
+    this->_text.setFont("fonts/final_frontier.ttf", 20);
+    this->_text.setVisibility(false);
     this->resize();
 
@@ -63,8 +63,8 @@
   void GLGuiInputLine::setText(const std::string& text)
   {
-    this->text.setText(text);
-    this->resize();
-
-    emit(this->textChanged(this->getText()));
+    this->_text.setText(text);
+    this->resize();
+
+    emit(this->textChanged(this->_text.getText()));
   }
 
@@ -75,7 +75,7 @@
   void GLGuiInputLine::append(const std::string& appendText)
   {
-    this->text.append(appendText);
-    this->resize();
-    emit(this->textChanged(this->text.getText()));
+    this->_text.append(appendText);
+    this->resize();
+    emit(this->textChanged(this->_text.getText()));
   }
 
@@ -87,7 +87,7 @@
   void GLGuiInputLine::appendCharacter(char character)
   {
-    this->text.appendCharacter(character);
-    this->resize();
-    emit(this->textChanged(this->text.getText()));
+    this->_text.appendCharacter(character);
+    this->resize();
+    emit(this->textChanged(this->_text.getText()));
   }
 
@@ -99,7 +99,7 @@
   void GLGuiInputLine::removeCharacters(unsigned int chars)
   {
-    this->text.removeCharacters(chars);
-    this->resize();
-    emit(this->textChanged(this->text.getText()));
+    this->_text.removeCharacters(chars);
+    this->resize();
+    emit(this->textChanged(this->_text.getText()));
   }
 
@@ -164,6 +164,6 @@
   void GLGuiInputLine::resize()
   {
-    this->text.setRelCoor2D(this->borderLeft() + 2.0,this->borderTop() + 2.0);
-    this->setSize2D( this->text.getSize2D() + Vector2D(borderLeft() + borderRight() + 4.0, borderTop() + borderBottom() + 4.0));
+    this->_text.setRelCoor2D(this->borderLeft() + 2.0,this->borderTop() + 2.0);
+    this->setSize2D( this->_text.getSize2D() + Vector2D(borderLeft() + borderRight() + 4.0, borderTop() + borderBottom() + 4.0));
     GLGuiWidget::resize();
 /*    this->frontRect().setTopLeft(borderLeft(), borderTop());
@@ -171,13 +171,17 @@
   }
 
+  void GLGuiInputLine::updateFrontColor()
+  {
+    this->_text.setColor(this->frontColor());
+  }
 
   void GLGuiInputLine::hiding()
   {
-    this->text.setVisibility(false);
+    this->_text.setVisibility(false);
   }
 
   void GLGuiInputLine::showing()
   {
-    this->text.setVisibility(true);
+    this->_text.setVisibility(true);
   }
 
Index: branches/gui/src/lib/gui/gl/glgui_inputline.h
===================================================================
--- branches/gui/src/lib/gui/gl/glgui_inputline.h	(revision 8418)
+++ branches/gui/src/lib/gui/gl/glgui_inputline.h	(revision 8419)
@@ -32,5 +32,5 @@
 
     /** @returns the text of the inputLine */
-    const std::string& getText() const { return this->text.getText(); };
+    const std::string& _getText() const { return this->_text.getText(); };
 
     void setText(const std::string& text);
@@ -48,12 +48,16 @@
     DeclareSignal1(textChanged, const std::string&);
 
+  protected:
+    virtual void updateFrontColor();
+    virtual void hiding();
+    virtual void showing();
+
+
   private:
     void init();
     void resize();
-    virtual void hiding();
-    virtual void showing();
 
   private:
-    Text                    text;             //!< The Text to display inside of the InputLine.
+    Text                    _text;            //!< The Text to display inside of the InputLine.
 
     Uint16                  pressedKey;       //!< the pressed key that will be repeated.
Index: branches/gui/src/lib/gui/gl/glgui_widget.cc
===================================================================
--- branches/gui/src/lib/gui/gl/glgui_widget.cc	(revision 8418)
+++ branches/gui/src/lib/gui/gl/glgui_widget.cc	(revision 8419)
@@ -66,5 +66,5 @@
     this->setVisibility(GLGUI_WIDGET_DEFAULT_VISIBLE);
 
-    this->_backMat.setDiffuse(1.0, 1.0, 1.0);
+    this->_backMat.setDiffuse(0.0, 0.0, 0.0);
     this->_frontColor.setColor(1.0, 0.0, 0.0);
 
@@ -176,5 +176,5 @@
   void GLGuiWidget::clicking(const Vector2D& pos)
   {
-    this->frontColor().setColor(0, 0, 1);
+    this->setFrontColor(Color(0, 0, 1));
 
   }
@@ -182,5 +182,5 @@
   void GLGuiWidget::releasing(const Vector2D& pos)
   {
-    this->frontColor().setColor(0,1,0);
+    this->setFrontColor(Color(0,1,0));
 
   }
@@ -188,16 +188,17 @@
   void GLGuiWidget::receivedFocus()
   {
-    this->frontColor().setColor(0, 1, 0);
+    this->setFrontColor(Color(0, 1, 0));
   }
 
   void GLGuiWidget::removedFocus()
   {
-    this->frontColor().setColor(1, 0, 0);
+    this->setFrontColor(Color(1, 0, 0));
 
   }
 
   void GLGuiWidget::destroyed()
-  {}
-  ;
+  {
+  };
+
 
   void GLGuiWidget::setWidgetSize(const Vector2D& size)
Index: branches/gui/src/lib/gui/gl/glgui_widget.h
===================================================================
--- branches/gui/src/lib/gui/gl/glgui_widget.h	(revision 8418)
+++ branches/gui/src/lib/gui/gl/glgui_widget.h	(revision 8419)
@@ -35,13 +35,13 @@
    */
   class GLGuiWidget : public Element2D
-{
+  {
   public:
-  //! An enumerator that defines the different states Widgets may be in.
-  typedef enum {
-    Normal,           //!< Normal state of the GUI's Widgets.
-    Active,           //!< If the widget is Active.
-    Selected,         //!< If the Widget is Selected.
-    Insensitive       //!< If the Widget is insensitive.
-  } State;
+    //! An enumerator that defines the different states Widgets may be in.
+    typedef enum {
+      Normal,           //!< Normal state of the GUI's Widgets.
+      Active,           //!< If the widget is Active.
+      Selected,         //!< If the Widget is Selected.
+      Insensitive       //!< If the Widget is insensitive.
+    } State;
 
 
@@ -92,5 +92,5 @@
     const Rect2D& backRect() const { return this->_backRect; };
 
-    Color& frontColor() { return this->_frontColor; };
+    void setFrontColor(const Color& frontColor) { this->_frontColor = frontColor; this->updateFrontColor(); };
     const Color& frontColor() const { return this->_frontColor; };
 
@@ -114,5 +114,6 @@
     void setBackgroundColor(float x, float y, float z) { this->backMaterial().setDiffuse(x,y,z); };
 
-    inline void drawRect(const Rect2D& rect) const {
+    inline void drawRect(const Rect2D& rect) const
+    {
       glBegin(GL_QUADS);
       glTexCoord2i(0,0); glVertex2d(rect.left(), rect.top());
@@ -130,6 +131,6 @@
     virtual bool processEvent(const Event& event) { return false; };
 
+
   protected:
-
     /// LOOKS
     virtual void resize();
@@ -137,4 +138,10 @@
     virtual void hiding() {};
     virtual void showing() {};
+    virtual void updateFrontColor() {};
+
+    inline void beginDraw() const { glPushMatrix(); glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0); };
+    inline void endDraw() const { glPopMatrix(); };
+
+    /// EVENTS
     // if something was clickt on the GUI-widget.
     virtual void clicking(const Vector2D& pos);
@@ -145,11 +152,6 @@
     virtual void destroyed();
 
-
-    inline void beginDraw() const { glPushMatrix(); glTranslatef(this->getAbsCoor2D().x, this->getAbsCoor2D().y, 0); };
-    inline void endDraw() const { glPopMatrix(); };
-
   private:
     void init();
-
 
   private:
Index: branches/gui/src/lib/util/color.cc
===================================================================
--- branches/gui/src/lib/util/color.cc	(revision 8418)
+++ branches/gui/src/lib/util/color.cc	(revision 8419)
@@ -18,4 +18,10 @@
 #include "color.h"
 #include <stdio.h>
+
+
+void Color::debug() const
+{
+  printf("r:%0.2f g:%0.2f, b:%0.2f, a:%0.2f\n", r(), g(), b(), a());
+}
 
 /**
Index: branches/gui/src/lib/util/color.h
===================================================================
--- branches/gui/src/lib/util/color.h	(revision 8418)
+++ branches/gui/src/lib/util/color.h	(revision 8419)
@@ -19,4 +19,7 @@
   Color(const Color& c) { _rgba[0] = c.r(); _rgba[1] = c.g(); _rgba[2] = c.b(); _rgba[3] = c.a(); }
 
+  const Color& operator=(const Color& c) { _rgba[0] = c.r(); _rgba[1] = c.g(); _rgba[2] = c.b(); _rgba[3] = c.a(); return *this; };
+  bool operator==(const Color& c) const { return (r() == c.r() && g() == c.g() && b() == c.b() && a() == c.a()); };
+
   inline float& operator[](unsigned int i) { return _rgba[i]; }
   inline const float& operator[](unsigned int i) const { return _rgba[i]; }
@@ -31,6 +34,9 @@
   inline float& a() { return _rgba[3]; }
 
+
+
   void setColor(float r = 0.0f, float g = 0.0f, float b = 0.0f, float a = 1.0f) { _rgba[0] = r; _rgba[1] = g; _rgba[2] = b; _rgba[3] = a; };
 
+  void debug() const;
 
   /// STATIC TRANSFORMATIONS
Index: branches/gui/src/util/hud.cc
===================================================================
--- branches/gui/src/util/hud.cc	(revision 8418)
+++ branches/gui/src/util/hud.cc	(revision 8419)
@@ -132,5 +132,5 @@
       weapon->getEnergyWidget()->backMaterial().setDiffuse( .8,.2,.11);
       weapon->getEnergyWidget()->backMaterial().setTransparency(.1);
-      weapon->getEnergyWidget()->frontColor().setColor( .2,.5,.7,.6);
+      weapon->getEnergyWidget()->setFrontColor(Color( .2,.5,.7,.6));
 //      weapon->getEnergyWidget()->frontMaterial().setTransparency(.6);
       this->weaponsWidgets.push_back(weapon->getEnergyWidget());
