                              const float3& Lpos, const float3& V,
                              const float3& Ka, const float3& Kd, const float3& Ks,
                              const float shininess,
+                             float3 const& volsize,
                              const float constAtt = 1.f, const float linearAtt = 0.f, const float quadAtt = 0.f,
                              const float3* normal = NULL)
 {
   // Normal transformed from texture to volume coordinates
-  float3 N = normalize(gradient<t_bpc>(texcoord));
+  float3 N = normalize(gradient<t_bpc>(texcoord, volsize));
   N = tex2vol(N);
 
   // Light direction


  // Ensure that dist is big enough
  const bool infinite = (tbnear+dist != tbnear && tbfar+dist != tbfar);

  while(infinite)
  {

      const float shininess = 1000.0f;
      if (justClippedPlane)
      {
        src = blinnPhong<t_bpc>(src, pos, texCoord, Lpos, V, Ka, Kd, Ks, shininess, volsize,
          constAtt, linearAtt, quadAtt, &planeNormal);
        justClippedPlane = false;
      }
      else if (justClippedSphere)
      {
        float3 sphereNormal = normalize(sphereCenter - pos);
        src = blinnPhong<t_bpc>(src, pos, texCoord, Lpos, V, Ka, Kd, Ks, shininess, volsize,
          constAtt, linearAtt, quadAtt, &sphereNormal);
        justClippedSphere = false;
      }
      else if(justClippedBox)
      {
        src = blinnPhong<t_bpc>(src, pos, texCoord, Lpos, V, Ka, Kd, Ks, shininess, volsize,
          constAtt, linearAtt, quadAtt, &boxNormal);
      }
      else
      {
        src = blinnPhong<t_bpc>(src, pos, texCoord, Lpos, V, Ka, Kd, Ks, shininess, volsize,
          constAtt, linearAtt, quadAtt);
      }
    }
    justClippedBox = false;
