The "blur" effect is due to the interpolation of color values. Keep in mind that "blur" is closely related to "averaging colors" and that is what many of the shaders to: they "average" colors in a smart way. Interpolation schemes are nice if you have (and expect) smooth transitions between adjacent patches in a mesh, but your images are inherently unsmooth. Consequently, the yellowish color dominates the interpolation schemes.
The solution is to switch to a non-interpolatory
If you switch to
shader=flat corner, you get
shader=interp is a linear interpolation,
shader=flat (which is equivalent to
shader=flat mean) is constant interpolation using averaging and
shader=flat corner uses the color of one of the corners (the first).
Note that this has a heavy effect on the last sphere: apparently, the cdata for the vertical slices is ignored in this way.