Index: trunk/ppSmooth/src/ppSmoothReadout.c
===================================================================
--- trunk/ppSmooth/src/ppSmoothReadout.c	(revision 26008)
+++ trunk/ppSmooth/src/ppSmoothReadout.c	(revision 26887)
@@ -51,6 +51,8 @@
     psImageSmoothMask_Threaded(input->variance, input->variance, input->mask, maskVal, sigma * M_SQRT1_2, nSigma, minGauss);
     psLogMsg("ppSmooth", PS_LOG_MINUTIA, "smooth variance: %f sec\n", psTimerMark("ppSmooth"));
+    psImageConvolveSetThreads(oldThreads);
 
     // determine covariance matrix for this smoothing, replace existing kernel
+    oldThreads = psImageCovarianceSetThreads(true);
     psKernel *kernel = psImageSmoothKernel(sigma, nSigma); // Kernel used for smoothing
     psKernel *covar = psImageCovarianceCalculate(kernel, input->covariance); // Covariance matrix
@@ -58,7 +60,6 @@
     input->covariance = covar;
     psFree(kernel);
-    
-    // Calculate correction factor for the covariance produced by the (potentially multiple) smoothing
     float factor = 1.0 / psImageCovarianceFactor(covar);
+    psImageCovarianceSetThreads(oldThreads);
 
     // record the effective area and significance scaling factor
@@ -66,6 +67,4 @@
     psMetadataAddF32(recipe, PS_LIST_TAIL, "EFFECTIVE_AREA", PS_META_REPLACE, "Effective Area", effArea);
     psMetadataAddF32(recipe, PS_LIST_TAIL, "SIGNIFICANCE_SCALE_FACTOR", PS_META_REPLACE, "Signicance scale factor", factor);
-
-    psImageConvolveSetThreads(oldThreads);
 
     return true;
