In a simple GLSL shader there are three texture lookups from different texture rectangles (GL_ARB_texture_rectangle). The second and third textures have half the width and height of the first one. In this case the first two returned texels are not the requested ones. It seems that the first set of texture coordinates is somehow internally multiplied by 2 and the second one is divided by 2. If I sample only the first texture or all textures have the same size, the returned texels are correct. The format of the textures does not matter (tested with GL_LUMINANCE8 and GL_RGBA8).
This was tested on a Radeon Xpress (device ID: 5975) with Catalyst 8.4 under Windows Vista SP1 64-bit. The shader works flawlessly on an NVIDIA card.
This is probably a driver bug. Is it likely to be fixed in the near future?