Index: /libpipi/trunk/pipi/pixels.c
===================================================================
--- /libpipi/trunk/pipi/pixels.c	(revision 2654)
+++ /libpipi/trunk/pipi/pixels.c	(revision 2655)
@@ -49,4 +49,18 @@
         return &img->p[type];
 
+    /* Preliminary conversions */
+    if(img->last_modified == PIPI_PIXELS_RGBA32
+                  && type == PIPI_PIXELS_Y_F)
+        pipi_getpixels(img, PIPI_PIXELS_RGBA_F);
+    else if(img->last_modified == PIPI_PIXELS_BGR24
+                       && type == PIPI_PIXELS_Y_F)
+        pipi_getpixels(img, PIPI_PIXELS_RGBA_F);
+    else if(img->last_modified == PIPI_PIXELS_Y_F
+                       && type == PIPI_PIXELS_RGBA32)
+        pipi_getpixels(img, PIPI_PIXELS_RGBA_F);
+    else if(img->last_modified == PIPI_PIXELS_Y_F
+                       && type == PIPI_PIXELS_BGR24)
+        pipi_getpixels(img, PIPI_PIXELS_RGBA_F);
+
     /* Allocate pixels if necessary */
     if(!img->p[type].pixels)
Index: /libpipi/trunk/examples/edd.c
===================================================================
--- /libpipi/trunk/examples/edd.c	(revision 2654)
+++ /libpipi/trunk/examples/edd.c	(revision 2655)
@@ -51,5 +51,4 @@
     /* Load image, convert it to grayscale, dither it with Floyd-Steinberg */
     img = pipi_load(argv[1]);
-    pipi_getpixels(img, PIPI_PIXELS_RGBA_F);
     pipi_getpixels(img, PIPI_PIXELS_Y_F);
     gauss = pipi_gaussian_blur(img, sigma);
Index: /libpipi/trunk/examples/dither.c
===================================================================
--- /libpipi/trunk/examples/dither.c	(revision 2654)
+++ /libpipi/trunk/examples/dither.c	(revision 2655)
@@ -28,5 +28,4 @@
 
     img = pipi_load(srcname);
-    pipi_getpixels(img, PIPI_PIXELS_RGBA_F);
 
     switch(atoi(argv[2]))
@@ -43,5 +42,4 @@
     pipi_free(img);
 
-    pipi_getpixels(newimg, PIPI_PIXELS_RGBA_F);
     pipi_save(newimg, dstname);
     pipi_free(newimg);
