diff --git a/src/modules/Image/layers.c b/src/modules/Image/layers.c
index 6d3e9a74607e88bc2c8adbdc639641ae7fafb147..1822ad2445e20c6fd34dd0867f8bd47a7064a120 100644
--- a/src/modules/Image/layers.c
+++ b/src/modules/Image/layers.c
@@ -1,7 +1,7 @@
 /*
 **! module Image
 **! note
-**!	$Id: layers.c,v 1.23 1999/06/30 11:02:56 mirar Exp $
+**!	$Id: layers.c,v 1.24 1999/06/30 21:54:19 mirar Exp $
 **! class Layer
 **! see also: layers
 **!
@@ -152,7 +152,7 @@
 
 #include <math.h> /* floor */
 
-RCSID("$Id: layers.c,v 1.23 1999/06/30 11:02:56 mirar Exp $");
+RCSID("$Id: layers.c,v 1.24 1999/06/30 21:54:19 mirar Exp $");
 
 #include "image_machine.h"
 
@@ -489,11 +489,7 @@ overlay
 
 #define ALPHA_ADD_V(L,S,D,LA,SA,DA,V,C)			   \
             do {							   \
-	       if (!(LA)->C)						   \
-	       {							   \
-		  (D)->C=COMBINE_ALPHA_V((S)->C,(L)->C,(SA)->C,0,V);	   \
-		  (DA)->C=COMBINE_ALPHA_SUM_V(0,(SA)->C,V);		   \
-	       }							   \
+ 	       if (!(LA)->C) (D)->C=(S)->C,(DA)->C=(SA)->C;		   \
 	       else if (!(SA)->C)					   \
 	       {							   \
 		  (D)->C=COMBINE_ALPHA_V((S)->C,(L)->C,0,(LA)->C,V);	   \
@@ -733,6 +729,8 @@ static void image_layer_set_alpha_value(INT32 args)
    if (f<0.0 || f>1.0)
       SIMPLE_BAD_ARG_ERROR("Image.Layer->set_alpha_value",1,"float(0..1)");
    THIS->alpha_value=f;
+   pop_n_elems(args);
+   ref_push_object(THISOBJ);
 }
 
 static void image_layer_alpha_value(INT32 args)