diff --git a/modules/gfx/src/impl/cartoon_renderer.cc b/modules/gfx/src/impl/cartoon_renderer.cc
index 1403c3891ef7c7501fb109789ae9e450c879892e..e2f6071f5baa78ee4337b09eeb5ec4e045c03b0a 100644
--- a/modules/gfx/src/impl/cartoon_renderer.cc
+++ b/modules/gfx/src/impl/cartoon_renderer.cc
@@ -51,6 +51,27 @@ void CartoonRenderer::SetForceTube(bool force_tube)
   force_tube_ = force_tube;
 }
 
+geom::AlignedCuboid CartoonRenderer::GetBoundingBox() const
+{
+  geom::Vec3 mmin(std::numeric_limits<float>::max(),
+		  std::numeric_limits<float>::max(),
+		  std::numeric_limits<float>::max());
+  geom::Vec3 mmax(-std::numeric_limits<float>::max(),
+		  -std::numeric_limits<float>::max(),
+		  -std::numeric_limits<float>::max());
+		  
+  assert(!(state_ & DIRTY_VIEW));
+  for(unsigned int llc=0;llc<spline_list_list_.size();++llc) {
+    SplineEntryList slist = spline_list_list_[llc];
+    for(unsigned int lc=0;lc<slist.size();++lc) {
+      mmin=geom::Min(mmin, slist[lc].position);
+      mmax=geom::Max(mmax, slist[lc].position);
+    }
+  }
+
+  return geom::AlignedCuboid(mmin, mmax);
+}
+  
 void CartoonRenderer::PrepareRendering()
 {
   TraceRendererBase::PrepareRendering();
diff --git a/modules/gfx/src/impl/cartoon_renderer.hh b/modules/gfx/src/impl/cartoon_renderer.hh
index 59be06b598c0f89723baf5fde722200f56c344f8..1d60eec76b775923e6b51ddc98ca8f815add45e0 100644
--- a/modules/gfx/src/impl/cartoon_renderer.hh
+++ b/modules/gfx/src/impl/cartoon_renderer.hh
@@ -41,6 +41,8 @@ class DLLEXPORT_OST_GFX CartoonRenderer: public TraceRendererBase {
 public:
   CartoonRenderer(BackboneTrace* trace, bool force_tube=false);
 
+  virtual geom::AlignedCuboid GetBoundingBox() const;  
+  
   virtual void PrepareRendering();
 
   virtual bool CanSetOptions(RenderOptionsPtr& render_options);