Agreed with previous poster, my immediate thoughts are also that you aren't handling half texel offsets properly.
I am trying to handle the offset, but definitely believe when you say that this is where the problem lies
I will do a full audit tonight, but this is what I am doing when rendering quads:
C#:
Vector2 halfPixel = new Vector2(.5f/GBufferSize.X, .5f/GBufferSize.Y); //this is passed into the effect file
HLSL (Vertex Shader):
struct VertexShaderOutput
{
float4 Position : POSITION0;
float2 TexCoord : TEXCOORD0;
};
VertexShaderOutput VertexShaderFunction(VertexShaderInput input)
{
VertexShaderOutput output;
output.Position = float4(input.Position, 1);
//align texture coordinates
output.TexCoord = input.TexCoord - halfPixel;
return output;
}