I've added a "Proof of the bug". There IS a bug. I don't know if it's software or in the hardware. The attached sample does the following: 1. Create a 1MB buffer. 2. Fill the first 4kb with the pattern: data[i+0] = 1.0f; data[i+1] = 0.5f; data[i+2] = 0.15f; data[i+3] = 0.0f; 3. Attach it via: glActiveTexture( GL_TEXTURE0 ); glBindTexture( GL_TEXTURE_BUFFER, texName ); glTexBufferRange( GL_TEXTURE_BUFFER, GL_RGBA32F, vboName, elementStart*sizeof(float), 1024*4*sizeof(float) ); ++elementStart; 4. Render a triangle showing the colours. If the alignment is not a problem, I should see Orange-Cream, then Carmine, then blue-violetish, then green; repeat. Instead I **ALWAYS** see Orange-Cream; which is clearly incorrect. After running the sample long enough, elementStart will be > 1024 (thus 1024*4 exceeding 4kb) and begins to display black. (and if you leave it long enough running it could crash or throw an error, that's not the point)