Работать с физикой в update - плохая идея. Попробуй через fixedupdate, это как минимум решат проблему различных лагов будущем, а возможно и конкретно твою.
Мерцание скорее всего происходит из-за того, что квадрат постоянно перерисовывается. Без doubleBuffered решить это возможно только, если рисовать данный квадрат 1 раз.