Как правило, проще и надежнее найти обратную матрицу, чем вычислять позицию клиента в мире вручную.
Проблема с вашей матрицей - причина, по которой вы не можете получить обратное, состоит в том, что вы уменьшаете ось Z до нуля.
Matrix.CreateScale(new Vector3(Scale, Scale, 0))
Это означает, что вы выровняли все пространство по одной оси. Таким образом, когда вы пытаетесь взять одну точку в этом пространстве (клиентское пространство) и вернуть ее в исходное пространство (мировое пространство), то, что вы получаете, на самом деле представляет собой линию, вытянутую вдоль оси Z. Вот почему вы получаете NaNs обратно. (Или вы могли бы просто сказать - вы ввели деление на ноль.)
Функция обратной матрицы не знает, что вы используете плоскую 2D-плоскость. Матрицы XNA 3D.
Исправление заключается в том, чтобы изменить вашу матрицу следующим образом:
Matrix.CreateScale(Scale)
Тогда попробуйте найти обратное.