diff --git a/src/render/Render_alternate.cpp b/src/render/Render_alternate.cpp
index 07ed7525fe715bb848d9c69fb1d1cb697fa5dba7..3b69fd8d10ab164bff2b3e8632d55e876a6b185c 100644
--- a/src/render/Render_alternate.cpp
+++ b/src/render/Render_alternate.cpp
@@ -48,8 +48,8 @@
 #include "common/Info.hpp"
 #include "common/Message.hpp"
 /* -- */
-//#include "render/GanttDiagram.hpp"
 
+#include <map>
 #include <GL/glew.h>
 /* -- */
 #include <QFile> // For loading the wait image
@@ -65,6 +65,13 @@
 #include "common/Info.hpp"
 #include "common/Message.hpp"
 /* -- */
+#include "trace/values/Values.hpp"
+#include "trace/tree/Interval.hpp"
+#include "trace/tree/Node.hpp"
+#include "trace/tree/BinaryTree.hpp"
+#include "trace/EntityValue.hpp"
+#include "trace/EntityTypes.hpp"
+#include "trace/Entitys.hpp"
 #include "trace/Trace.hpp"
 /* -- */
 #include "render/Ruler.hpp"
@@ -976,6 +983,9 @@ void Render_alternate::draw_state(const Element_pos x, const Element_pos y, cons
         Vbo *v = new Vbo(s);
         std::pair<EntityValue*, Vbo*> p2(value, v);
         _states.insert(p2);
+
+        connect( value, SIGNAL(changedColor( EntityValue * )),
+                 this, SLOT(update_ev( EntityValue *)) );
     }
     //add the state to the vbo
     _current = _states[value];
@@ -1014,6 +1024,9 @@ void Render_alternate::start_draw_arrows(){
          std::vector<Element_pos> v;
          std::pair<EntityValue*, std::vector<Element_pos> > p3(value, v);
          _links.insert(p3);
+
+        connect( value, SIGNAL(changedColor( EntityValue * )),
+                 this, SLOT(update_ev( EntityValue *)) );
      }
      //store data in vbo
      const Element_pos offset_x = -_default_entity_x_translate;
@@ -1077,6 +1090,9 @@ void Render_alternate::draw_event(const Element_pos time, const Element_pos heig
         std::pair<Vbo*, Vbo*> p1(v1, v2);
         std::pair<EntityValue*, std::pair<Vbo*, Vbo*> > p2(value, p1);
         _events.insert(p2);
+
+        connect( value, SIGNAL(changedColor( EntityValue * )),
+                 this, SLOT(update_ev( EntityValue *)) );
     }
     const Element_pos offset_x = -_default_entity_x_translate;
     const Element_pos offset_y = -_ruler_y - _ruler_height;
@@ -1217,6 +1233,81 @@ void Render_alternate::clear_text (){
     _variable_texts.clear();
 }
 
+/* Change the shader associated to entityType entity */
+void
+Render_alternate::update_ev_single( EntityValue *ev,
+                                    std::map<EntityValue*, Vbo*> *evmap,
+                                    bool shaded )
+{
+    std::map<EntityValue*, Vbo*>::iterator it;
+
+    it = evmap->find( ev );
+    if ( it != evmap->end() ) {
+        Vbo   *vbo = it->second;
+        Color *c = ev->get_used_color();
+
+        //delete previous shader
+        vbo->delete_shader();
+
+        //create and load the new shader*/
+        Shader *s = new Shader(_glsl,
+                               c->get_red(),
+                               c->get_green(),
+                               c->get_blue(),
+                               shaded );
+        s->charger();
+        vbo->set_shader(s);
+    }
+}
+
+void
+Render_alternate::update_ev_couple( EntityValue *ev,
+                                    std::map<EntityValue*, std::pair<Vbo*, Vbo*> > *evmap,
+                                    bool shaded )
+{
+    std::map< EntityValue*, std::pair<Vbo*, Vbo*> >::iterator it;
+
+    it = evmap->find( ev );
+    if ( it != evmap->end() ) {
+        Vbo   *vbo1 = it->second.first;
+        Vbo   *vbo2 = it->second.second;
+        Color *c = ev->get_used_color();
+
+        //delete previous shader
+        vbo1->delete_shader();
+
+        //create and load the new shader*/
+        Shader *s = new Shader(_glsl,
+                               c->get_red(),
+                               c->get_green(),
+                               c->get_blue(),
+                               shaded );
+        s->charger();
+        vbo1->set_shader(s);
+        vbo2->set_shader(s);
+    }
+}
+
+
+void
+Render_alternate::update_ev( EntityValue *ev )
+{
+    EntityClass_t ec = ev->get_class();
+
+    switch( ec ) {
+    case _EntityClass_State:
+        update_ev_single( ev, &_states, true );
+        break;
+
+    case _EntityClass_Event:
+        update_ev_couple( ev, &_events, false );
+        break;
+
+    case _EntityClass_Link:
+        update_ev_couple( ev, &_arrows, false );
+    }
+}
+
 /* Change the shader associated to entityType entity */
 void Render_alternate::change_color(std::string entity,
                                     Element_col r,
diff --git a/src/render/Render_alternate.hpp b/src/render/Render_alternate.hpp
index 5b15a519b9ea78aa63f0ad09c6098d32dfb3c6f1..e70222f7d32da7580aa3fdb9c1f50f8fa0dea5c6 100644
--- a/src/render/Render_alternate.hpp
+++ b/src/render/Render_alternate.hpp
@@ -556,6 +556,12 @@ public:
      */
     Element_pos get_vertical_line();
 
+    void update_ev_single( EntityValue *ev,
+                           std::map<EntityValue*, Vbo*> *evmap,
+                           bool shaded );
+    void update_ev_couple( EntityValue *ev,
+                           std::map<EntityValue*, std::pair<Vbo*, Vbo*> > *evmap,
+                           bool shaded );
 public slots:
     /*!
      * \brief slot connected to the simple click event
@@ -594,6 +600,7 @@ public slots:
 
     void render_text(QString text, float x, float y, float w, float h);
 
+    void update_ev( EntityValue *ev );
 };