Fixes: * Values exceeding the encoded range. Future may account for a certain range above and below current values. * Minor calculation problem that prevented the above fix from working properly. * Streamlined the shader code. * Add a vertex shader to handle the scaling. * Use the viewport resolution as the scaled version to save performance.