         gameState.battleField.ballX += gameState.battleField.ballSpeed.x;
         gameState.battleField.ballY += gameState.battleField.ballSpeed.y;
         moveBall = false;
-        gameState.battleField.ball.setPoint(gameState.battleField.ballX>>1, gameState.battleField.ballY>>1);
+        gameState.battleField.ball.setPoint(gameState.battleField.ballX>>PIX_BITS,
+                                            gameState.battleField.ballY>>PIX_BITS);
         if (checkGameAreaHit())
         {
             moveBall = true;

    {
        if (gameState.battleField.ball.x < gameState.battleField.platform.p1.x + 3)
        {
            gameState.battleField.ballSpeed.x = -2;
            gameState.battleField.ballSpeed.y = -gameState.battleField.ballSpeed.y;
        }
        else if (gameState.battleField.ball.x > gameState.battleField.platform.p2.x - 3)
        {
            gameState.battleField.ballSpeed.x = +2;
            gameState.battleField.ballSpeed.y = -gameState.battleField.ballSpeed.y;
        }
        else
        {
            gameState.battleField.ballSpeed.x = gameState.battleField.ballSpeed.x > 0 ? 1: -1;
            gameState.battleField.ballSpeed.y = -gameState.battleField.ballSpeed.y;
        }
        return true;

    {
        NanoRect  platform;  // platform position on the screen
        NanoPoint ball;      // ball position on the screen
        int16_t   ballX;     // ball position in ^PIX_BITS coordinates
        int16_t   ballY;     // ball position in ^PIX_BITS coordinates
        NanoPoint ballSpeed; // ball speed in *2 coordinates
        uint8_t   blocks[BLOCK_NUM_ROWS][MAX_BLOCKS_PER_ROW];
        uint8_t   blocksLeft;
