diff --git a/src/modules/image/image.h b/src/modules/image/image.h
index c37001dc2847f855ccd298b38f44020b748360b0..bd62410980dc5689d27d2297a6ed132b31b40c6f 100644
--- a/src/modules/image/image.h
+++ b/src/modules/image/image.h
@@ -1,4 +1,4 @@
-/* $Id: image.h,v 1.16 1996/12/05 23:50:52 law Exp $ */
+/* $Id: image.h,v 1.17 1996/12/10 00:40:06 law Exp $ */
 
 #define MAX_NUMCOL 32768
 
@@ -20,7 +20,7 @@ typedef struct
 
 typedef struct
 {
-   signed long r,g,b;
+   INT32 r,g,b;
 } rgbl_group;
 
 typedef struct
diff --git a/src/modules/image/operator.c b/src/modules/image/operator.c
index 51d54ef0a8e1ee4291b5567aff4492e68e012889..55a520d5e2b9c75b0e80cc1c1b7c2c6931f435f0 100644
--- a/src/modules/image/operator.c
+++ b/src/modules/image/operator.c
@@ -1,4 +1,4 @@
-/* $Id: operator.c,v 1.1 1996/12/05 23:52:54 law Exp $ */
+/* $Id: operator.c,v 1.2 1996/12/10 00:40:07 law Exp $ */
 #include "global.h"
 
 #include <math.h>
@@ -86,6 +86,15 @@ STANDARD_OPERATOR_HEADER("'+")
 
 void image_operator_multiply(INT32 args)
 {
+   double q=1/255.0;
+STANDARD_OPERATOR_HEADER("'+")
+   while (i--)
+   {
+      d->r=floor(s1->r*s2->r*q+0.5);
+      d->g=floor(s1->g*s2->g*q+0.5);
+      d->b=floor(s1->b*s2->b*q+0.5);
+      s1++; s2++; d++; 
+   }
 }
 
 void image_operator_maximum(INT32 args)
diff --git a/src/modules/image/pattern.c b/src/modules/image/pattern.c
index b83993896577bdbf2e0527ee91ea6a85b8ef59be..d4693e2aafa385718a861e981c72ffaa4f44f277 100644
--- a/src/modules/image/pattern.c
+++ b/src/modules/image/pattern.c
@@ -1,4 +1,4 @@
-/* $Id: pattern.c,v 1.2 1996/11/14 12:35:02 law Exp $ */
+/* $Id: pattern.c,v 1.3 1996/12/10 00:40:08 law Exp $ */
 
 #include "global.h"
 
@@ -78,11 +78,11 @@ static double noise(double Vx,double Vy,unsigned short *noise_p)
 static double turbulence(double x,double y,int octaves)
 {
    double t=0;
+   double mul=1;
    while (octaves-->0)
    {
-      x/=2;
-      y/=2;
-      t=t/2+noise(x,y,noise_p1);
+      t+=noise(x*mul,y*mul,noise_p1)*mul;
+      mul*=0.5;
    }
    return t;
 }
diff --git a/src/modules/image/quant.c b/src/modules/image/quant.c
index 3f2396b33527f9e8b3f12f7c1675964f1d0c531b..971065bb46989d53d7ece5dbd2798e3f0d7646d5 100644
--- a/src/modules/image/quant.c
+++ b/src/modules/image/quant.c
@@ -1,4 +1,4 @@
-/* $Id: quant.c,v 1.18 1996/12/08 23:59:59 law Exp $ */
+/* $Id: quant.c,v 1.19 1996/12/10 00:40:09 law Exp $ */
 
 /*
 
@@ -432,7 +432,7 @@ fprintf(stderr,"space: %d,%d,%d-%d,%d,%d  ",
 	 *rgb_node=
 	    ( (*rn_next)-ct->rgb_node )
 	    | ( ((unsigned long)split_on) << 22 )
-	    | ( (dir+1)<<30 );
+	    | ( (dir+1)<<30 ) & 0xffffffff;
 	 rgb_node=*rn_next;
 	 (*rn_next)+=2;
 
diff --git a/src/modules/image/togif.c b/src/modules/image/togif.c
index 02455d24130902a7101abc2ba2b7ec030316096d..46894cd10ba5c70926da31b67f86ad3cfabb58e3 100644
--- a/src/modules/image/togif.c
+++ b/src/modules/image/togif.c
@@ -1,4 +1,4 @@
-/* $Id: togif.c,v 1.20 1996/12/02 16:49:40 per Exp $ */
+/* $Id: togif.c,v 1.21 1996/12/10 00:40:11 law Exp $ */
 /*
 
 togif 
@@ -647,8 +647,6 @@ CHRONO("gif add init");
       else 
 	 error("Illegal argument %d to image->gif_add()\n",3+!!ct);
 
-fprintf(stderr,"delay: %d\n",delay);
-
       low_my_putchar( '!', &buf ); /* extension block */
       low_my_putchar( 0xf9, &buf ); /* graphics control */
       low_my_putchar( 4, &buf ); /* block size */