diff --git a/src/conio/sdl_con.c b/src/conio/sdl_con.c
index 1ebdb5129d72b0d1fb0a96a3a2e6732b76781b15..1df1fad05b224a54bd43220f36653a9209c9a26a 100644
--- a/src/conio/sdl_con.c
+++ b/src/conio/sdl_con.c
@@ -278,31 +278,35 @@ void yuv_fillrect(SDL_Overlay *overlay, SDL_Rect *r, int dac_entry)
 	yuv.changed=1;
 	switch(overlay->format) {
 		case SDL_IYUV_OVERLAY:
-			/* Swap planes */
+			/* YUV 4:2:0 NxM Y followed by (N/2)x(M/2) U and V (12bpp) */
 			uplane=1;
 			vplane=2;
 			goto planar;
 		case SDL_YV12_OVERLAY:
-			uplane=2;
+			/* YUV 4:2:0 NxM Y followed by (N/2)x(M/2) V and U (12bpp) */
 			vplane=1;
+			uplane=2;
 			goto planar;
 		case SDL_YUY2_OVERLAY:
+			/* YUV 4:2:2 Y0,U0,Y1,V0 (16bpp) */
 			y0pack=0;
-			y1pack=2;
 			u0pack=1;
+			y1pack=2;
 			v0pack=3;
 			goto packed;
 		case SDL_UYVY_OVERLAY:
-			y0pack=1;
-			y1pack=3;
+			/* YUV 4:2:2 U0,Y0,V0,Y1 (16bpp)  */
 			u0pack=0;
+			y0pack=1;
 			v0pack=2;
+			y1pack=3;
 			goto packed;
 		case SDL_YVYU_OVERLAY:
+			/* YUV 4:2:2 Y0,V0,Y1,U0 (16bpp)  */
 			y0pack=0;
+			v0pack=1;
 			y1pack=2;
 			u0pack=3;
-			v0pack=1;
 			goto packed;
 	}
 	return;
@@ -322,8 +326,10 @@ planar:
 		for(y=0; y<r->h; y++)
 		{
 			memset(Y, yuv.colours[dac_entry][0], r->w);
+			/* Increment every line */
 			Y+=overlay->pitches[0];
 			if(odd_line) {
+				/* Increment on odd lines */
 				U+=overlay->pitches[uplane];
 				V+=overlay->pitches[vplane];
 			}
@@ -331,6 +337,7 @@ planar:
 				memset(U, yuv.colours[dac_entry][1], uvlen);
 				memset(V, yuv.colours[dac_entry][2], uvlen);
 			}
+			odd_line = !odd_line;
 		}
 	}
 	return;