     if (rotatedHitPoint.z <= 0.) { // off-limb or back
         hitPoint = vec3(up1.x, up1.y, intersectPlane(cameraDifferenceRotationQuat, up1, onDisk));
         rotatedHitPoint = rotate_vector_inverse(cameraDifferenceRotationQuat, hitPoint);
+
+        if (length(rotatedHitPoint) <= 1) // central disk
+            discard;
 
         if (calculateDepth != 0) // intersecting Eufhoria planes
             gl_FragDepth = 0.5 - hitPoint.z * CLIP_SCALE_WIDE;


    vec2 difftexcoord;
    if (isdifference != NODIFFERENCE) {
        vec3 diffrotatedHitPoint = rotate_vector_inverse(diffcameraDifferenceRotationQuat, hitPoint);
        if (/*radius2 >= 1. ||*/ diffrotatedHitPoint.z <= 0.) {
            hitPoint = vec3(up1.x, up1.y, intersectPlane(diffcameraDifferenceRotationQuat, up1, onDisk));
            diffrotatedHitPoint = rotate_vector_inverse(diffcameraDifferenceRotationQuat, hitPoint);

    bool onDisk = radius2 <= 1;

    float factor;
    vec3 hitPoint = vec3(0.), rotatedHitPoint = vec3(0.), diffrotatedHitPoint = vec3(0.);;

    if (onDisk) {
        hitPoint = vec3(up1.x, up1.y, sqrt(1. - radius2));
        rotatedHitPoint = differential(rotate_vector_inverse(cameraDifferenceRotationQuat, hitPoint), 0);
        diffrotatedHitPoint = differential(rotate_vector_inverse(diffcameraDifferenceRotationQuat, hitPoint), 0);
        factor = 1.;
        gl_FragDepth = 0.5 - hitPoint.z * CLIP_SCALE_NARROW;
    } else {
