diff --git a/modules/gfx/src/impl/backbone_trace.cc b/modules/gfx/src/impl/backbone_trace.cc
index 235ad226b232465e037342333493de62063343b9..11463588dff62950ce5d87494a71b41e58eb159e 100644
--- a/modules/gfx/src/impl/backbone_trace.cc
+++ b/modules/gfx/src/impl/backbone_trace.cc
@@ -83,7 +83,7 @@ public:
       NodeEntry entry={ca, GfxObj::Ele2Color(ca.GetElement()),
                        GfxObj::Ele2Color(ca.GetElement()),
                        geom::Vec3(), // this will be set by the gfx trace obj
-                       geom::Normalize(res.GetCentralNormal()),
+                       res.GetCentralNormal(),
                        1.0,
                        geom::Vec3(),geom::Vec3(),geom::Vec3(), // for later use in NA rendering
                        false,id_counter_++};
@@ -149,6 +149,17 @@ void BackboneTrace::Rebuild()
   }
 }
 
+void BackboneTrace::OnUpdatedPositions()
+{
+  for(NodeEntryListList::iterator nitnit=node_list_list_.begin();nitnit!=node_list_list_.end();++nitnit) {
+    NodeEntryList& nlist=*nitnit;
+    for(NodeEntryList::iterator nit=nlist.begin();nit!=nlist.end();++nit) {
+      nit->normal=nit->atom.GetResidue().GetCentralNormal();
+    }
+    PrepList(nlist);
+  }
+}
+
 void BackboneTrace::AddNodeEntryList(const NodeEntryList& l)
 {
   if(l.size()>=3) {
diff --git a/modules/gfx/src/impl/backbone_trace.hh b/modules/gfx/src/impl/backbone_trace.hh
index debcc54b59b653e5370f3dbe581d46fd3fac87b6..4151121f27659297ad3d0523fcd10a99385afacc 100644
--- a/modules/gfx/src/impl/backbone_trace.hh
+++ b/modules/gfx/src/impl/backbone_trace.hh
@@ -65,6 +65,9 @@ public:
 
   // re-creates internal nodelist-list based on view
   void Rebuild();
+
+  // entity has new positions
+  void OnUpdatedPositions();
   
   // extract portions of this backbone trace for a subview
   // this is faster then re-generating a trace
diff --git a/modules/gfx/src/impl/trace_renderer_base.cc b/modules/gfx/src/impl/trace_renderer_base.cc
index 74317a47386708779b383e034ce1cce523eee845..91b681cc6ca560048bff7ec5738f14ab8ad7a0f6 100644
--- a/modules/gfx/src/impl/trace_renderer_base.cc
+++ b/modules/gfx/src/impl/trace_renderer_base.cc
@@ -79,6 +79,12 @@ TraceRendererBase::TraceRendererBase(BackboneTrace* trace, int n):
 
 void TraceRendererBase::PrepareRendering()
 {
+  if (state_ & DIRTY_VA) {
+    trace_->OnUpdatedPositions();
+    trace_subset_.OnUpdatedPositions();
+    if(this->HasSelection()) sel_subset_.OnUpdatedPositions();
+    // don't clear DIRTY_VA flag - derived classed may depend on it
+  }
 }
 
 void TraceRendererBase::UpdateViews()