title: Write to framebuffer then read - glReadPixels gives result offset beyond a certain value limit
body: <p>i have a test situation where i write to a framebuffer with the following code</p>
  
  <pre><code>varying vec4 vertex_color;
  void main(void)
  {
   gl_FragColor = vec4(129.0,129.0,129.0,256.0)/256.0;
  }
  </code></pre>
  
  <p>and read it back later with a glReadPixels call</p>
  
  <pre><code>GLubyte data[4] = {0};
  glReadPixels( pick.x, pick.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, data);
  </code></pre>
  
  <p>Up to the value 128.0 i read back exactly what i wrote, beyond that in the value range 129-255 the values are lowered by one, eg</p>
  
  <pre><code>gl_FragColor r(1.0) -&gt; data[0]=1;
  ...
  gl_FragColor r(128.0) -&gt; data[0]=128;
  gl_FragColor r(129.0) -&gt; data[0]=128;
  ...
  gl_FragColor r(255.0) -&gt; data[0]=254;
  gl_FragColor r(256.0) -&gt; data[0]=255;
  </code></pre>
  
  <p>Where does that offset may come from?</p>