screen = pygame.display.set_mode(QVGA, pygame.FULLSCREEN) の話

フルスクリーンディスプレイモードが設定された時、場合によってはこちらで想定していたフルスクリーン状態にならない場合もあります。こうした状況において、pygameは要求に最も近いディスプレイモードを選び出して実行します。 作成されたsurfaceのサイズは、設定されたresolution引数と常に同じ値になります。

display - Pygameドキュメント 日本語訳

普通の PC 用ディスプレイは QVGA (320*240 pixel) の画面モードに対応していない。
なので、画面サイズをフルスクリーンとしつつ QVGA を指定すると、画面は違うサイズに設定される。 pygame がベースにしている SDL が、聴きごとの画面サイズの違いを吸収するべく、可能な画面サイズでエミュレートしてくれるためらしい。
フルスクリーンのスクリーンショットを撮ってみると解りやすい。

(※ はてダの仕様で、実際のスクショよりも縮小されてます。)
スクショの画像サイズは 640*400 だった。
だから何って話だけど、フルスクリーンにするなら、一般的なディスプレイサイズ(例えば VGA )に合わせて作るのが吉。エミュレーションで縦横比がしばしば変になるから。