отметьте это:
http://jsfiddle.net/U8BE5/1/
Это должно дать вам некоторые идеи о том, как обрабатывать ваши граничные условия (также с масштабированием).
I 'Я не уверен, почему вы решили использовать два холста и не использовать jQuery, это, вероятно, приносит больше вреда, чем пользы.
Соответствующий код для границ:
if (gX > 0) gX = 0;
if (gX < canvas.width - gW * gScale) gX = canvas.width - gW * gScale;
if (gY > 0) gY = 0;
if (gY < canvas.height - gH * gScale) gY = canvas.height - gH * gScale;
Проверьте мойОбщий подход в скрипке, чтобы увидеть, если вы хотите немного изменить свою стратегию.
Если честно, я не мог следовать некоторому вашему коду.