     if(rend->getSliceInterpol() || rend->getRendererType() == vvRenderer::CUDAPER)
     {
         if(rend->getPreIntegration())
-            return compositeSlicesPreIntegrated<Scalar, 1, Pixel, sliceStep, principal, earlyRayTerm>;
+            return compositeSlicesBilinear<Scalar, 1, Pixel, sliceStep, principal, earlyRayTerm, true>;
         else
-            return compositeSlicesBilinear<Scalar, 1, Pixel, sliceStep, principal, earlyRayTerm>;
+            return compositeSlicesBilinear<Scalar, 1, Pixel, sliceStep, principal, earlyRayTerm, false>;
     }
     else
 #endif

                // store into shmem
                *pix = d;
            }
            sf[ix] = sb;
        }
    }


            if(earlyRayTerm && isOpaque(d))
                continue;

            if(preInt)
            {
                const float sb = volume(vidx, line-iPosY, slice, principal);
                if(slice != firstSlice)
                {
                    const float4 c = tex2D(tex_preint, sf[ix], sb);

                    // blend
                    const float w = d.w*c.w;
                    d.x += w*c.x;
                    d.y += w*c.y;
                    d.z += w*c.z;
                    d.w -= w;

                    // store into shmem
                    *pix = d;
                }
                sf[ix] = sb;
            }
            else
            {
                const float v = volume(vidx, line-iPosY, slice, principal);
                const float4 c = classify<float4>(v);

                // blend
                const float w = d.w*c.w;
