どうも、解決しました!
>>414のリンク先が参考になりました。

これまでシェーダーに以下のように記述してました。
float3 position;
position = mul(float4(vertex.pos, 1), (float4x3)matWorld);
position = mul(float4(position, 1), (float4x3)matView);
ret.pos = mul(float4(position, 1), matProjection);

これを以下のように修正しました。
float4 position;
position = mul(float4(vertex.pos, 1), matWorld);
position = mul(position, matView);
ret.pos = mul(position, matProjection);

これまでワールドビュー変換では、W成分を使わなかったのですが
平面投影行列を使うとW成分を使うことになるので、射影変換の結果がおかしくなっていた
ということでしょうか。どうも皆さんありがとうございました!