スクリーン座標のz値はワールド座標に対して線形ではないので、
渡す座標のzの値が少しでも1.0fより小さくなるとニアクリップ側に大きく近づいた座標が返ってきます
リファレンスには載っていませんが指定するz値を線形的に扱う関数 ConvScreenPosToWorldPos_ZLinear が
ありますので、よろしければお使いください m(_ _)m
( ただ、処理負荷は ConvScreenPosToWorldPos より重いです )
// スクリーン座標をワールド座標に変換する( Z座標が線形 )
VECTOR ConvScreenPosToWorldPos_ZLinear( VECTOR ScreenPos ) ;