diff --git a/src/stratagus/stratagus.cpp b/src/stratagus/stratagus.cpp
index 7efb52476..ea0c73647 100644
--- a/src/stratagus/stratagus.cpp
+++ b/src/stratagus/stratagus.cpp
@@ -527,9 +527,13 @@ local void ShowTitleScreens(void)
 		if (PlayMovie(TitleScreens[i]->File,
 				PlayMovieZoomScreen | PlayMovieKeepAspect)) {
 			TitleScreenLabel** labels;
+			Graphic* g;
 
+			g = LoadGraphic(TitleScreens[i]->File);
+			ResizeGraphic(g, VideoWidth, VideoHeight);
 			while (timeout-- && WaitNoEvent) {
-				DisplayPicture(TitleScreens[i]->File);
+				VideoDrawSubClip(g, 0, 0, g->Width, g->Height,
+					(VideoWidth - g->Width) / 2, (VideoHeight - g->Height) / 2);
 				labels = TitleScreens[i]->Labels;
 				if (labels && labels[0] && IsFontLoaded(labels[0]->Font)) {
 					for (j = 0; labels[j]; ++j) {
@@ -545,6 +549,7 @@ local void ShowTitleScreens(void)
 				RealizeVideoMemory();
 				WaitEventsOneFrame(&callbacks);
 			}
+			VideoFree(g);
 		}
 
 		VideoClearScreen();