diff --git a/src/modules/Image/encodings/png.c b/src/modules/Image/encodings/png.c
index 2edb0bd262c9d477932fb6c592e414689819a01f..6f88df8a3acfba5b97f4477cf45de92574f4631d 100644
--- a/src/modules/Image/encodings/png.c
+++ b/src/modules/Image/encodings/png.c
@@ -1,5 +1,5 @@
 #include "global.h"
-RCSID("$Id: png.c,v 1.29 2000/03/25 18:18:21 per Exp $");
+RCSID("$Id: png.c,v 1.30 2000/04/10 01:18:45 per Exp $");
 
 #include "image_machine.h"
 
@@ -1150,17 +1150,18 @@ static void img_png_decode(INT32 args,int header_only)
 		     push_int(ct->u.flat.entries[(int)b->item[1].u.string->str[0]].color.g);
 		     push_int(ct->u.flat.entries[(int)b->item[1].u.string->str[0]].color.b);
 		  }
-		  break;
+                  break;
 	       default:
-		  if (b->item[1].u.string->len!=6)
+		  if (b->item[1].u.string->len==6)
 		  {
 		     int j;
 		     for (j=0; j<3; j++)
 		     {
-			int z=_png_c16(b->item[1].u.string->str[j],ihdr.bpp);
+			int z=_png_c16(b->item[1].u.string->str[j*2],ihdr.bpp);
 			push_int(z);
 		     }
-		  }
+		  } else
+                    continue;
 		  break;
 	    }
 	    f_aggregate(3);