diff --git a/src/partiviewc.cc b/src/partiviewc.cc
index aa6fc79fb639413f6e7821e3832112569873f947..121070052a92673ddc1a515565975f853b9133e5 100644
--- a/src/partiviewc.cc
+++ b/src/partiviewc.cc
@@ -650,7 +650,7 @@ static int snapjpeg( char *outfname, int xsize, int ysize, char *rgbbuf )
 
     while(cinfo.next_scanline < cinfo.image_height) {
 	JSAMPROW rowptr[1];
-	rowptr[0] = reinterpret_cast<JSAMPROW>(&rgbbuf[cinfo.next_scanline * xsize*3]);
+	rowptr[0] = reinterpret_cast<JSAMPROW>(&rgbbuf[(cinfo.image_height - 1 - cinfo.next_scanline) * xsize*3]);
 	jpeg_write_scanlines(&cinfo, rowptr, 1);
     }
     jpeg_finish_compress(&cinfo);