Я делаю шутер сверху вниз, который опирается на аватар, который всегда поворачивается, указывая на курсор мыши. Я достигаю поворота следующим образом:
//Rendering.
context.save(); //Save the context state, we're about to change it a lot.
context.translate(position[0] + picture.width/2, position[1] + picture.height/2); //Translate the context to the center of the image.
context.rotate(phi); //Rotate the context by the object phi.
context.drawImage(picture.image, -picture.width/2, -picture.height/2); //Draw the image at the appropriate position (center of the image = [0, 0]).
context.restore(); //Get the state back.
Когда значение phi равно нулю, изображение отображается в обычном качестве, с острыми краями и обнаруживаемыми пикселями. Но, когда я устанавливаю значение phi на ненулевое значение (фактически, когда оно не 0, Pi/2, Pi, Pi+Pi/2 или 2Pi), изображение теряет остроту, и отдельные пиксели могут больше не видно, потому что они размыты.
Вот скриншот (извините за общее плохое качество снимка экрана, но я думаю, что разница более чем заметна):

Это, ну, немного неприемлемо. Я не могу иметь изображения всегда размыты! Почему это происходит и могу ли я его решить?