diff --git a/lib/modules/_Image_PSD.pmod b/lib/modules/_Image_PSD.pmod
index 8de76ec1b6b4964361d442826ab90dd61d7d16df..431ed1519d3744d4de06370d14f9e4c68f84f3db 100644
--- a/lib/modules/_Image_PSD.pmod
+++ b/lib/modules/_Image_PSD.pmod
@@ -107,9 +107,9 @@ Layer decode_layer(mapping layer, mapping i)
          else
            lays += (({ Image.Layer( ([
              "image":___decode_image_channel(l->width, l->height, c->data),
-             "alpha_value":1.0,
+//             "alpha_value":1.0,
              "mode":mode, 
-           ]) )
+	   ]) )
            }));
 //          werror(mode+" took %4.5f seconds\n", (gethrtime()-st)/1000000.0 );
          c->data = 0;
@@ -310,7 +310,8 @@ array decode_layers( string|mapping what, mapping|void opts )
     {
       Image.Layer lay = Image.Layer( l->image, l->alpha, m );
       l->image = 0; l->alpha = 0;
-      lay->set_alpha_value( l->opacity / 255.0 );
+      if( l->opacity != 255 )
+	lay->set_alpha_value( 1.0 - l->opacity / 255.0 );
       lay->set_offset( l->xoffset, l->yoffset );
       layers += ({ lay });
     }