diff --git a/matlab/+SSF/getClipLimits.m b/matlab/+SSF/getClipLimits.m
index c3d93db28f4b9fd2de248cffb944b7124b238f61..5eb239d722123d4d52ddce3616e4cc7fe3158b7b 100644
--- a/matlab/+SSF/getClipLimits.m
+++ b/matlab/+SSF/getClipLimits.m
@@ -29,10 +29,9 @@ parfor ff=1:length(flist)
 end 
 
 kymoPixels = vertcat(kymoPixels{:});
-cl = [mean(kymoPixels)-std(kymoPixels), mean(kymoPixels)+std(kymoPixels)];
-q1 = length(find(kymoPixels<cl(1)))./length(kymoPixels);
-q2 = 1 - length(find(kymoPixels>cl(2)))./length(kymoPixels);
-pxTarget = linspace(q1,q2,254);
-clipLimits = quantile(kymoPixels,pxTarget);
+
+clip_neg = SSF.getClipQuantiles(kymoPixels(kymoPixels<0),127);
+clip_pos = SSF.getClipQuantiles(kymoPixels(kymoPixels>0),127);
+clipLimits = [clip_neg,clip_pos];
 clipLimits = repmat({clipLimits},length(flist),1);
 4;
diff --git a/matlab/+SSF/getClipQuantiles.m b/matlab/+SSF/getClipQuantiles.m
new file mode 100644
index 0000000000000000000000000000000000000000..b6cf656da7db13c1329c2e9925aea4501b021cff
--- /dev/null
+++ b/matlab/+SSF/getClipQuantiles.m
@@ -0,0 +1,12 @@
+function clipLimits = getClipQuantiles(voxels,nQuant)
+% 
+% mx = mean(voxels);
+% sx = std(voxels);
+% cl = [mx-sx, mx+sx];
+% q1 = length(find(voxels<cl(1)))./length(voxels);
+% q2 = 1 - length(find(voxels>cl(2)))./length(voxels);
+% pxTarget = linspace(q1,q2,nQuant);
+% clipLimits = quantile(voxels,pxTarget);
+
+pxTarget = linspace(2.5,97.5,nQuant);
+clipLimits = prctile(voxels,pxTarget);
diff --git a/matlab/+SSF/go_ssf_ncd.m b/matlab/+SSF/go_ssf_ncd.m
index db4ad479a60237e9b7570dff9c6a1d6849d486c6..5a06be400d6cd46bdf199c095f77668f5f3918fc 100644
--- a/matlab/+SSF/go_ssf_ncd.m
+++ b/matlab/+SSF/go_ssf_ncd.m
@@ -24,7 +24,7 @@ kymoPixels = {};
  
 p = ljsStartParallel();
 % 
-if ~exist('clipLimits','var')
+if ~exist('clipLimits','var') || isempty(clipLimits)
     clipLimits = SSF.getClipLimits(flist,targetChannels,nKeep,tClip);
 end
 %