#ifdef _USE_VTK_
 
-#include "vtkProperty.h"
 #include "vtkLinearTransform.h"
 #include "vtkCleanPolyData.h"
 #include "vtkFieldData.h"
        //---------------------------------------------------------------------
    void PolyDataToActor::bbUserInitializeProcessing() 
    {    
-     polydatamapper = vtkPolyDataMapper::New();
-     vtkactor       = vtkActor::New();
+     polydatamapper     = vtkPolyDataMapper::New();
+     vtkactor           = vtkActor::New();
+     backfaceproperty   = vtkProperty::New();
+
 //     polydatamapper->SetInput(marchingcubes->GetOutput());
      vtkactor->SetMapper(polydatamapper);
 
             vtkactor->GetProperty()->SetColor( bbGetInputColour()[0], bbGetInputColour()[1], bbGetInputColour()[2] );
             vtkactor->GetProperty()->SetOpacity( bbGetInputOpacity() );
 
-            vtkProperty *backfaceproperty = vtkProperty::New();
-            backfaceproperty->SetColor(0.5, 0.5, 1);
-            backfaceproperty->SetOpacity( bbGetInputOpacity() );
-            vtkactor->SetBackfaceProperty( backfaceproperty );
+//EED 2023-07-28
+            if (bbGetInputBackFaceColour().size()==3)
+            {
+                backfaceproperty->SetColor(0.5, 0.5, 1);
+                backfaceproperty->SetOpacity( bbGetInputOpacity() );
+                vtkactor->SetBackfaceProperty( backfaceproperty );
+            } else {
+                vtkactor->SetBackfaceProperty( NULL );
+            }
 
              if ( bbGetInputTransform()!=NULL )
              {
 
 #include "vtkProp3D.h"
 #include "vtkActor.h"
 #include "vtkScalarsToColors.h"
+#include "vtkProperty.h"
+
 #include <vector>
 
 #include "bbtkAtomicBlackBox.h"
     bool              actorAdded;
     vtkPolyDataMapper *polydatamapper;
     vtkActor          *vtkactor; 
-    
+    vtkProperty       *backfaceproperty;
+      
     BBTK_BLACK_BOX_INTERFACE(PolyDataToActor,bbtk::AtomicBlackBox);
     
     BBTK_DECLARE_INPUT(Active,bool);
     BBTK_DECLARE_INPUT(In,vtkPolyData *);
     BBTK_DECLARE_INPUT(Opacity,double);
     BBTK_DECLARE_INPUT(Colour,std::vector<double>);
+    BBTK_DECLARE_INPUT(BackFaceColour,std::vector<double>);
     BBTK_DECLARE_INPUT(Renderer,vtkRenderer *);
     BBTK_DECLARE_INPUT(Transform, vtkLinearTransform *);
     BBTK_DECLARE_INPUT(Representation, int);
   BBTK_INPUT(PolyDataToActor,Active,"Active true/false (default true)",bool,"");
   BBTK_INPUT(PolyDataToActor,Opacity,"Opacity",double,"");
   BBTK_INPUT(PolyDataToActor,Colour,"r g b",vectorcolour,"colour");
+  BBTK_INPUT(PolyDataToActor,BackFaceColour,"(default EMPTY) [r g b]  (0..1)",vectorcolour,"colour");
   BBTK_INPUT(PolyDataToActor,Renderer,"3D scene in which to insert the surface",vtkRenderer*,"");
   BBTK_INPUT(PolyDataToActor,Transform,"Linear Transform (4x4 homogeneous)",vtkLinearTransform*,"");
   BBTK_INPUT(PolyDataToActor,Representation,"0 points,1 wireframe, 2(default) surface",int,"");