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

  #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;
  #endif

  #if defined(vtkIndependentComponentsOn) && vtkNumComponents >= 2

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

    #ifdef VolumeShadowOn
