this is more correct, I guess

dither_pos is moved by 0.5 to center the coordinates to rotate the
dither texture correctly around the center, and then moved back. But
the non-fractional part was not 0, so the rotation was not really
around the center, or so I think.
simplify

Actually ignore the previous commit. It's all modulo 1, so this should
work with arbitrary offsets, even the matrix rotates the position into
the negative.