fix topLeftCache and use it
save topLeftCache in GetTopLeft after calling CalculateTopLeft