折り返されているときの、座標計算でタブ幅がおかしい気がします。
レイアウト桁位置(GetCaretLayoutPos().x)-行頭インデント+カーソル行の1つ上までのロジック行頭からの折り返されていない場合のレイアウト桁数(CalcLayoutOffset)
になっています。
すべて折り返されていない場合のレイアウト桁位置を表示したいなら、行頭インデントがタブ幅でない場合はずれが出ます。
IndentをCalcLayoutOffsetの値としてGetCaretLayoutPos().xまでを計算しないとだめです。