Our original idea was to store the rotation as a separate value, keeping the original footprint around. Quaternions seem to do the same thing; keeping a rotation around and applying it at the last minute. But the FreeRotateBuffer action has to result in a rotated buffer, and once it's rotated, we have to round to our units, and that's where we lose precision.