Index: trunk/psModules/src/objects/pmPCM_MinimizeChisq.c
===================================================================
--- trunk/psModules/src/objects/pmPCM_MinimizeChisq.c	(revision 32707)
+++ trunk/psModules/src/objects/pmPCM_MinimizeChisq.c	(revision 32725)
@@ -324,5 +324,6 @@
 	// * threading takes place above this level
 	pcm->modelConvFlux = psImageCopy (pcm->modelConvFlux, pcm->modelFlux, pcm->modelFlux->type.type);
-	psImageSmooth (pcm->modelConvFlux, pcm->sigma, pcm->nsigma);
+	psImageSmooth_PreAlloc_F32 (pcm->modelConvFlux, pcm->smdata);
+	// psImageSmooth (pcm->modelConvFlux, pcm->sigma, pcm->nsigma);
     } else {
 	psImageConvolveKernel (pcm->modelConvFlux, pcm->modelFlux, NULL, 0, pcm->psfFFT);
@@ -343,5 +344,6 @@
 	    // * threading takes place above this level
 	    dmodelConv = psImageCopy (dmodelConv, dmodel, dmodel->type.type);
-	    psImageSmooth (dmodelConv, pcm->sigma, pcm->nsigma);
+	    psImageSmooth_PreAlloc_F32 (dmodelConv, pcm->smdata);
+	    // psImageSmooth (dmodelConv, pcm->sigma, pcm->nsigma);
 	} else {
 	    psImageConvolveKernel (dmodelConv, dmodel, NULL, 0, pcm->psfFFT);
@@ -363,5 +365,6 @@
 	    // * threading takes place above this level
 	    dmodelConv = psImageCopy (dmodelConv, dmodel, dmodel->type.type);
-	    psImageSmooth (dmodelConv, pcm->sigma, pcm->nsigma);
+	    psImageSmooth_PreAlloc_F32 (dmodelConv, pcm->smdata);
+	    // psImageSmooth (dmodelConv, pcm->sigma, pcm->nsigma);
 	} else {
 	    psImageConvolveFFT (dmodelConv, dmodel, NULL, 0, pcm->psf);
Index: trunk/psModules/src/objects/pmPCMdata.c
===================================================================
--- trunk/psModules/src/objects/pmPCMdata.c	(revision 32707)
+++ trunk/psModules/src/objects/pmPCMdata.c	(revision 32725)
@@ -57,4 +57,5 @@
     psFree (pcm->psfFFT);
     psFree (pcm->constraint);
+    psFree (pcm->smdata); // pre-allocated data for psImageSmooth_PreAlloc
     return;
 }
@@ -284,4 +285,8 @@
     pcm->sigma = 0.5 * (FWHM_MAJOR + FWHM_MINOR) / 2.35;
     pcm->nsigma = 2.0;
+
+    pcm->smdata = psImageSmooth_PreAlloc_DataAlloc (source->pixels, pcm->sigma, pcm->nsigma);
+# else
+    pcm->smdata = NULL;
 # endif
 
@@ -393,4 +398,6 @@
 	    pcm->dmodelsConvFlux->data[n] = psImageCopy (pcm->dmodelsConvFlux->data[n], source->pixels, PS_TYPE_F32);
 	}
+	psFree(pcm->smdata);
+	pcm->smdata = psImageSmooth_PreAlloc_DataAlloc (source->pixels, pcm->sigma, pcm->nsigma);
     }
 
Index: trunk/psModules/src/objects/pmPCMdata.h
===================================================================
--- trunk/psModules/src/objects/pmPCMdata.h	(revision 32707)
+++ trunk/psModules/src/objects/pmPCMdata.h	(revision 32725)
@@ -39,4 +39,6 @@
     float sigma;
     float nsigma;
+
+    psImageSmooth_PreAlloc_Data *smdata;
 } pmPCMdata;
 
