diff --git a/modules/gfx/src/impl/cpk_renderer.cc b/modules/gfx/src/impl/cpk_renderer.cc
index dce0cccb0f807197d98c439a5c2fddc3e8793284..b0aff5ec60cb74a21625b25ad267f401fad74549 100644
--- a/modules/gfx/src/impl/cpk_renderer.cc
+++ b/modules/gfx/src/impl/cpk_renderer.cc
@@ -64,6 +64,7 @@ void CPKRenderer::PrepareRendering(GfxView& view, IndexedVertexArray& va, bool i
 #if OST_SHADER_SUPPORT_ENABLED
       if(options_->GetSphereMode()==1 || options_->GetSphereMode()==2) {
         FastSphereRenderer& fsr = is_sel ? sel_fsr_ : fsr_;
+        fsr.Clear();
         for(AtomEntryMap::const_iterator it=view.atom_map.begin();it!=view.atom_map.end();++it) {
           fsr.Add(it->second.atom.GetPos(),
                   is_sel? sel_clr : it->second.color,
diff --git a/modules/gfx/src/impl/fast_spheres.cc b/modules/gfx/src/impl/fast_spheres.cc
index af8745b6d1e658fec12c2b81cecd1256cc9dde34..e10ac2d03d62fdc90a8eedc955d169b6ce1f8e55 100644
--- a/modules/gfx/src/impl/fast_spheres.cc
+++ b/modules/gfx/src/impl/fast_spheres.cc
@@ -41,6 +41,11 @@ namespace ost { namespace gfx { namespace impl {
     data_(d)
   {}
 
+  void FastSphereRenderer::Clear()
+  {
+    data_.clear();
+  }
+
   void FastSphereRenderer::Add(float pos[3], float col[4], float rad)
   {
     static VData data;
diff --git a/modules/gfx/src/impl/fast_spheres.hh b/modules/gfx/src/impl/fast_spheres.hh
index 054b4ffcb035fd3e1b42462771ef64cff1be095a..2cef93d6561407b768586537851e5a5b83f7011a 100644
--- a/modules/gfx/src/impl/fast_spheres.hh
+++ b/modules/gfx/src/impl/fast_spheres.hh
@@ -44,6 +44,7 @@ namespace ost { namespace gfx { namespace impl {
     FastSphereRenderer(size_t reserve=0);
     FastSphereRenderer(const DataList&);
 
+    void Clear();
     void Add(float pos[3], float col[4], float rad);
     void Add(const geom::Vec3& pos, const Color& col, float rad);