diff --git a/src/interface/Settings_window.cpp b/src/interface/Settings_window.cpp
index 30085d874dc010989fdb1f5ffb255ace4055f3e9..22ccf04934ac876037a858c2b250c2172e7cb5d6 100644
--- a/src/interface/Settings_window.cpp
+++ b/src/interface/Settings_window.cpp
@@ -399,10 +399,6 @@ void Settings_window::fill_table_links( const string &palette_name ) {
                 "link_types", palette_name );
 }
 
-
-
-
-
 void Settings_window::on_palette_list_currentIndexChanged(const QString & text) {
     _changed=true;
     fill_table_states(text.toStdString());
diff --git a/src/render/Render_alternate.cpp b/src/render/Render_alternate.cpp
index 1683ee4c0202585718754ce9e6c5a0505b4befac..9c6f5eb28630ff12e6527d50d7269edba5512da1 100644
--- a/src/render/Render_alternate.cpp
+++ b/src/render/Render_alternate.cpp
@@ -77,6 +77,13 @@
 
 using namespace std;
 
+extern "C" {
+    void checkGlError(){
+        int rc = glGetError();
+        assert(rc == GL_NO_ERROR );
+    }
+}
+
 
 #define message *Message::get_instance() << "(" << __FILE__ << " l." << __LINE__ << "): "
 
@@ -138,13 +145,22 @@ void  Render_alternate::initializeGL() {
     if(err!=GLEW_OK){
         std::cout << "ERROR : GlewInit failed" << std::endl;
     }
+#ifdef USE_QT5
+    // Reset the error code set to GL_INVALID_ENUM by glewInit()
+    glGetError();
+#endif
+
+    checkGlError();
     glClearColor(0.5f, 0.5f, 0.55f, 0.0f);
     glEnable(GL_DEPTH_TEST);
+    checkGlError();
     glClearStencil(0);
+    checkGlError();
 
     // Check for OpenGL version support
     std::cout << "init" << std::endl;
     const GLubyte * version = glGetString(GL_SHADING_LANGUAGE_VERSION);
+    checkGlError();
     if (version==NULL)
         std::cout << "ERROR : could not detect your GLSL version" << std::endl;
     else
@@ -167,6 +183,7 @@ void  Render_alternate::initializeGL() {
 
 void  Render_alternate::resizeGL(int width, int height) {
     glViewport(0, 0, width, height);
+    checkGlError();
 
     /* update informations about widget size */
     Info::Screen::width  = width;
@@ -183,28 +200,49 @@ void  Render_alternate::resizeGL(int width, int height) {
 
 
 void  Render_alternate::paintGL(){
+    checkGlError();
     glClearDepth(1.0);
+    checkGlError();
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    checkGlError();
+
     /*Draw the home screen*/
     if(DRAWING_STATE_WAITING == _state){
         glUseProgram(_wait.get_shader()->getProgramID());
+        checkGlError();
+
         glEnable(GL_BLEND);
+        checkGlError();
+
         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+        checkGlError();
+
         _wait.lock();
+
         glBindTexture(GL_TEXTURE_2D, _textureID);
+        checkGlError();
+
         std::cout << "draw wait\n";
-        glDrawArrays(GL_QUADS, 0, _wait.getNbVertex());
+        // GL_QUADS is deprecated for Opengl greater than 3., so an invalide enum is returned by glGetError and needs to be reset
+        // TODO: fix that by replacing by GL_TRIANGLES
+        glDrawArrays((GLenum)GL_QUADS, 0, _wait.getNbVertex()); glGetError();
+        checkGlError();
         glBindTexture(GL_TEXTURE_2D, 0);
+        checkGlError();
         _wait.unlock();
         glUseProgram(0);
+        checkGlError();
         return;
     }
     /*Else, draw the trace*/
 
     resizeGL(Render_alternate::QGLWidget::width(), Render_alternate::QGLWidget::height());
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+    checkGlError();
+
     //select shader program
     glUseProgram(_shader->getProgramID());
+    checkGlError();
     std::cout << "paintGL" << std::endl;
     glm::mat4 tmp  = _modelview;
     glm::mat4 tmp2 = _modelview;
@@ -217,13 +255,17 @@ void  Render_alternate::paintGL(){
     _modelview = glm::translate(_modelview, glm::vec3(0.0, 0.0, _z_ruler));
     mvp = _projection * _modelview;
     glUniformMatrix4fv(glGetUniformLocation(_shader->getProgramID(), "MVP"), 1, GL_FALSE, glm::value_ptr(mvp));
+    checkGlError();
     /*The first 8 elements of the vbo are the coordinates of the quads, others elements are coordinates of the graduation*/
-    glDrawArrays(GL_QUADS, 0, 8);
+    glDrawArrays(GL_QUADS, 0, 8);  glGetError();
+    checkGlError();
     _modelview = tmp;
     _modelview = glm::translate(_modelview, glm::vec3(0.0, 0.0, _z_ruler_over));
     mvp = _projection * _modelview;
     glUniformMatrix4fv(glGetUniformLocation(_shader->getProgramID(), "MVP"), 1, GL_FALSE, glm::value_ptr(mvp));
+    checkGlError();
     glDrawArrays(GL_LINES, 8, _ruler.getNbVertex()-8);
+    checkGlError();
     _ruler.unlock();
     _modelview = tmp;
 
@@ -235,7 +277,7 @@ void  Render_alternate::paintGL(){
     _modelview = glm::scale(_modelview, glm::vec3(_x_scale_container_state/0.20, _y_state_scale, 1.0));
     mvp = _projection * _modelview;
     glUniformMatrix4fv(glGetUniformLocation(_shader->getProgramID(), "MVP"), 1, GL_FALSE, glm::value_ptr(mvp));
-    glDrawArrays(GL_QUADS, 0, _containers.getNbVertex());
+    glDrawArrays(GL_QUADS, 0, _containers.getNbVertex());  glGetError();
     _containers.unlock();
     _modelview = tmp;
     glUseProgram(0);
@@ -250,11 +292,13 @@ void  Render_alternate::paintGL(){
         glUseProgram(s->getProgramID());
         it_state->second->lock();
         glUniformMatrix4fv(glGetUniformLocation(s->getProgramID(), "MVP"), 1, GL_FALSE, glm::value_ptr(mvp));
-        if(it_state->first==NULL || it_state->first->get_visible())
-            glDrawArrays(GL_QUADS, 0, it_state->second->getNbVertex());
+        if(it_state->first==NULL || it_state->first->get_visible()) {
+            glDrawArrays(GL_QUADS, 0, it_state->second->getNbVertex());  glGetError();
+        }
         it_state->second->unlock();
         it_state++;
     }
+    checkGlError();
 
     /*drawing counters*/
     glUseProgram(_counters.get_shader()->getProgramID());
@@ -264,6 +308,7 @@ void  Render_alternate::paintGL(){
     glDrawArrays(GL_LINES, 0, _counters.getNbVertex());
     _counters.unlock();
     _modelview = tmp;
+    checkGlError();
 
     /*drawing links*/
     if(false == Info::Render::_no_arrows){
@@ -323,6 +368,7 @@ void  Render_alternate::paintGL(){
         }
         _modelview = tmp;
     }
+    checkGlError();
 
     /*drawing events*/
     if(false == Info::Render::_no_events){
@@ -387,13 +433,14 @@ void  Render_alternate::paintGL(){
         glEnableVertexAttribArray(0);
         glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 0, selection_colors);
         glEnableVertexAttribArray(1);
-        glDrawArrays(GL_QUADS, 0, 4);
+        glDrawArrays(GL_QUADS, 0, 4); glGetError();
         glDisableVertexAttribArray(0);
         glDisableVertexAttribArray(1);
         glDisable(GL_BLEND);
         _modelview = tmp;
- }
+    }
     draw_vertical_line();
+    checkGlError();
 
     //deselect shader
     glUseProgram(0);
@@ -417,6 +464,7 @@ void  Render_alternate::paintGL(){
                          QString().setNum((*it).second.value),
          arial_font);
     }
+    checkGlError();
 
 
     qglColor(Qt::white);
@@ -501,6 +549,7 @@ void  Render_alternate::paintGL(){
 
     }
 
+    checkGlError();
 }
 /***********************************
  *
@@ -1026,15 +1075,23 @@ void Render_alternate::draw_vertical_line(){
                         Info::Render::height};
     double colors[6] = {1.0, 0.0, 0.0, 1.0, 0.0, 0.0};
     mvp = _projection * _modelview;
+    checkGlError();
     glUniformMatrix4fv(glGetUniformLocation(_shader->getProgramID(), "MVP"), 1, GL_FALSE, glm::value_ptr(mvp));
+    checkGlError();
     glVertexAttribPointer(0, 2, GL_DOUBLE, GL_FALSE, 0, vertex);
+    checkGlError();
     glEnableVertexAttribArray(0);
+    checkGlError();
     glVertexAttribPointer(1, 3, GL_DOUBLE, GL_FALSE, 0, colors);
+    checkGlError();
     glEnableVertexAttribArray(1);
+    checkGlError();
     glDrawArrays(GL_LINES, 0, 2);
+    checkGlError();
     glDisableVertexAttribArray(0);
+    checkGlError();
     glDisableVertexAttribArray(1);
-
+    checkGlError();
 }
 
 /*!