   #if vtkNumComponents == 1
     vec4 tColor = texture2D(ctexture, vec2(tValue.r * cscale0 + cshift0, 0.5));
     tColor.a = goFactor.x*texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r;
+    if (tColor.a < EPSILON){
+      return vec4(0.0);
+    }    
   #endif
 
   #if defined(vtkIndependentComponentsOn) && vtkNumComponents >= 2

            applyLightingDirectional(tColor.rgb, normalLight);
        #else
            applyLightingPositional(tColor.rgb, normalLight, IStoVC(posIS));  
    #endif

    #ifdef VolumeShadowOn

      tValue = getTextureValue(posIS);

      // now map through opacity and color
      if (texture2D(otexture, vec2(tValue.r * oscale0 + oshift0, 0.5)).r > EPSILON){
        tColor = getColorForValue(tValue, posIS, tstep);
      }

      float mix = (1.0 - color.a);

