Index: trunk/psphot/src/psphotAddNoise.c
===================================================================
--- trunk/psphot/src/psphotAddNoise.c	(revision 12635)
+++ trunk/psphot/src/psphotAddNoise.c	(revision 12689)
@@ -4,9 +4,13 @@
 
     bool status = false;
-    psTimerStart ("psphot");
+    psEllipseShape oldshape;
+    psEllipseShape newshape;
+    psEllipseAxes axes;
 
     PS_ASSERT (readout, false);
     PS_ASSERT (readout->parent, false);
     PS_ASSERT (readout->parent->concepts, false);
+
+    psTimerStart ("psphot");
 
     // increase variance by factor*(object noise):
@@ -15,4 +19,6 @@
 
     float FACTOR = psMetadataLookupF32 (&status, recipe, "NOISE.FACTOR");
+    PS_ASSERT (status, false);
+    float SIZE = psMetadataLookupF32 (&status, recipe, "NOISE.SIZE");
     PS_ASSERT (status, false);
 
@@ -39,5 +45,22 @@
 	}
 
-	model->params->data.F32[PM_PAR_I0] *= FACTOR;
+	psF32 *PAR = model->params->data.F32;
+
+	// save original values
+	float oldI0  = PAR[PM_PAR_I0];
+	oldshape.sx  = PAR[PM_PAR_SXX];
+	oldshape.sy  = PAR[PM_PAR_SYY];
+	oldshape.sxy = PAR[PM_PAR_SXY];
+
+	// increase size and height of source
+	axes = psEllipseShapeToAxes (oldshape, 20.0);
+	axes.major *= SIZE;
+	axes.minor *= SIZE;
+	newshape = psEllipseAxesToShape (axes);
+	PAR[PM_PAR_I0]  = FACTOR*PS_SQR(oldI0);
+	PAR[PM_PAR_SXX] = newshape.sx;
+	PAR[PM_PAR_SYY] = newshape.sy;
+	PAR[PM_PAR_SXY] = newshape.sxy;
+
 	if (add) {
 	    pmModelAdd (source->weight, source->mask, model, false, false);
@@ -45,4 +68,10 @@
 	    pmModelSub (source->weight, source->mask, model, false, false);
 	}
+	
+	// restore original values
+	PAR[PM_PAR_I0]  = oldI0;	
+	PAR[PM_PAR_SXX] = oldshape.sx;
+	PAR[PM_PAR_SYY] = oldshape.sy;
+	PAR[PM_PAR_SXY] = oldshape.sxy;
     }
     if (add) {
