diff --git a/modules/gfx/src/entity.cc b/modules/gfx/src/entity.cc
index 90d16501baecde98b6dc349f00b7c8d7aa211065..07a38b28f1213f2e72124e5b9ffc8fb5eec617bd 100644
--- a/modules/gfx/src/entity.cc
+++ b/modules/gfx/src/entity.cc
@@ -229,10 +229,13 @@ void Entity::Rebuild()
     trace_.ResetView(nv);
     for (RendererMap::iterator i=renderer_.begin(), 
            e=renderer_.end(); i!=e; ++i) {
-      i->second->ClearViews();
-      i->second->AddView(nv);
-      i->second->UpdateViews();
-      i->second->PrepareRendering();
+      impl::EntityRenderer* r=i->second;
+      if (r->IsEnabled() && r->HasDataToRender()) {
+        i->second->ClearViews();
+        i->second->AddView(nv);
+        i->second->UpdateViews();
+        i->second->PrepareRendering();
+      }
     }
   }
 
@@ -332,11 +335,13 @@ bool Entity::UpdateIfNeeded() const
     for (RendererMap::iterator i=renderer_.begin(), 
            e=renderer_.end(); i!=e; ++i) {
       EntityRenderer* renderer =i->second;
-      if (renderer->IsDirty()) {
-        renderer->PrepareRendering();
-        updated=true;
+      if (renderer->IsEnabled() && renderer->HasDataToRender()) {
+        if (renderer->IsDirty()) {
+          renderer->PrepareRendering();
+          updated=true;
+        }
+        renderer->VA().SetOpacity(opacity_);
       }
-      renderer->VA().SetOpacity(opacity_);
     }
     if (updated) {
       this->CacheBoundingBox();
@@ -361,7 +366,10 @@ void Entity::RefreshVA()
 {
   for (RendererMap::iterator i=renderer_.begin(), 
 	 e=renderer_.end(); i!=e; ++i) {
-    i->second->Debug(debug_flags_);
+    EntityRenderer* renderer =i->second;
+    if (renderer->IsEnabled() && renderer->HasDataToRender()) {
+      renderer->Debug(debug_flags_);
+    }
   }
 }
 
@@ -370,7 +378,7 @@ void Entity::CustomRenderGL(RenderPass pass)
   for (RendererMap::iterator i=renderer_.begin(), 
        e=renderer_.end(); i!=e; ++i) {
     impl::EntityRenderer* r=i->second;
-    if(r->IsEnabled()) {
+    if(r->IsEnabled() && r->HasDataToRender()) {
       if(pass==STANDARD_RENDER_PASS) {
         r->Render(pass);
         if(outline_flag_) {
@@ -398,7 +406,7 @@ void Entity::CustomRenderGL(RenderPass pass)
 void Entity::CustomRenderPov(PovState& pov)
 {
   for (RendererMap::iterator it=renderer_.begin(); it!=renderer_.end(); ++it) {
-    if(it->second->IsEnabled()){
+    if(it->second->IsEnabled() && it->second->HasDataToRender()){
       it->second->RenderPov(pov,GetName());
     }
   }
@@ -524,7 +532,7 @@ RenderOptionsPtr Entity::GetOptions(RenderMode::Type render_mode)
 }
 
 void Entity::SetOptions(RenderMode::Type render_mode, 
-			RenderOptionsPtr& render_options)
+                        RenderOptionsPtr& render_options)
 {
   if(!render_options) return;
   RendererMap::iterator i=renderer_.find(render_mode);
@@ -534,13 +542,13 @@ void Entity::SetOptions(RenderMode::Type render_mode,
       EntityP e=boost::dynamic_pointer_cast<Entity>(shared_from_this());
       RenderOptionsPtr old_render_options = entity_renderer->GetOptions();
       if(old_render_options) {
-	old_render_options->RemoveObserver(e);
+        old_render_options->RemoveObserver(e);
       }
       entity_renderer->SetOptions(render_options);
       render_options->AddObserver(e);
       FlagRebuild();
       Scene::Instance().RequestRedraw();
-    } else{
+    } else {
       throw Error("These render options are not compatible with this render mode.");
     }
   } else {
@@ -549,7 +557,7 @@ void Entity::SetOptions(RenderMode::Type render_mode,
 }
 
 void Entity::ApplyOptions(RenderMode::Type render_mode,
-                                RenderOptionsPtr& render_options)
+                          RenderOptionsPtr& render_options)
 {
   RendererMap::iterator i=renderer_.find(render_mode);  
   if(i!=renderer_.end()) {
@@ -587,9 +595,7 @@ void Entity::SetOpacity(float f)
 void Entity::SetOutlineWidth(float f)
 {
   for (RendererMap::iterator it=renderer_.begin(); it!=renderer_.end(); ++it) {
-    if(it->second->IsEnabled()){
-      it->second->VA().SetOutlineWidth(f);
-    }
+    it->second->VA().SetOutlineWidth(f);
   }
   Scene::Instance().RequestRedraw();
 }
@@ -597,9 +603,7 @@ void Entity::SetOutlineWidth(float f)
 void Entity::SetOutlineExpandFactor(float f)
 {
   for (RendererMap::iterator it=renderer_.begin(); it!=renderer_.end(); ++it) {
-    if(it->second->IsEnabled()){
-      it->second->VA().SetOutlineExpandFactor(f);
-    }
+    it->second->VA().SetOutlineExpandFactor(f);
   }
   Scene::Instance().RequestRedraw();
 }
@@ -607,9 +611,7 @@ void Entity::SetOutlineExpandFactor(float f)
 void Entity::SetOutlineExpandColor(const Color& c)
 {
   for (RendererMap::iterator it=renderer_.begin(); it!=renderer_.end(); ++it) {
-    if(it->second->IsEnabled()){
-      it->second->VA().SetOutlineExpandColor(c);
-    }
+    it->second->VA().SetOutlineExpandColor(c);
   }
   Scene::Instance().RequestRedraw();
 }
@@ -928,7 +930,9 @@ template <typename I, typename O>
 void apply_color_op_to_renderer_list(I begin, I end, const O& o)
 {
   for (I i=begin; i!=end; ++i) {
-    i->second->Apply(o);
+    if(i->second->IsEnabled() && i->second->HasDataToRender()) {
+      i->second->Apply(o);
+    }
   }
 }
 
diff --git a/modules/gfx/src/impl/trace_renderer_base.cc b/modules/gfx/src/impl/trace_renderer_base.cc
index 81a6fb979314a84bbfc0e4d438a47f2ab4dc988c..ce014610eff9322a8aa1ecd5c59641a4a98260a6 100644
--- a/modules/gfx/src/impl/trace_renderer_base.cc
+++ b/modules/gfx/src/impl/trace_renderer_base.cc
@@ -48,14 +48,15 @@ inline void apply_color_op(TraceRendererBase* rend, BackboneTrace& trace_subset,
     for (int node_list=0; node_list<trace_subset.GetListCount(); ++node_list) {
       NodeEntryList& nl=trace_subset.GetList(node_list);
       for (unsigned int i=0; i<nl.size();++i) {
-        if (q.IsAtomSelected(nl[i].atom)) {
-          Color clr =get_col.ColorOfAtom(nl[i].atom);
-          set_node_entry_color(nl[i],mask,clr);
+        if(nl[i].atom.IsValid()) {
+          if (q.IsAtomSelected(nl[i].atom)) {
+            Color clr =get_col.ColorOfAtom(nl[i].atom);
+            set_node_entry_color(nl[i],mask,clr);
+          }
         }
       }
     }
-  }
-  else{
+  } else {
     mol::EntityView view = op.GetView();
     for (int node_list=0; node_list<trace_subset.GetListCount(); ++node_list) {
       NodeEntryList& nl=trace_subset.GetList(node_list);