diff --git a/LFtoSR.m b/LFtoSR.m
index 1fe3de50288d0cb5f50aaa5b7af690293b18b978..30fbbb271ea6ddcb559a2ffb0e3781b3061566bd 100644
--- a/LFtoSR.m
+++ b/LFtoSR.m
@@ -107,27 +107,29 @@ for lab = 1:numLab
             LFX(:,:,v)>=min(srxqgv{lab})-1 & LFX(:,:,v)<=max(srxqgv{lab})+1 & ...
             LFY(:,:,v)>=min(sryqgv{lab})-1 & LFY(:,:,v)<=max(sryqgv{lab})+1;
         
-        LFXsub = reshape(LFX(:,:,v),[],1);
-        LFYsub = reshape(LFY(:,:,v),[],1);
+        [~,mgv] = utils.tighten(Mask);
         
-        LFXsub = LFXsub(Mask,:);
-        LFYsub = LFYsub(Mask,:);
+        LFXsub = LFX(mgv{:},v);
+        LFYsub = LFY(mgv{:},v);
+        
+        LFXsub = LFXsub(:);
+        LFYsub = LFYsub(:);
         
         % Interpolate color
         for c = 1:numChan
-            Colsub = reshape(Color(:,:,c,v),[],1);
-            Colsub = Colsub(Mask,:);
+            Colsub = Color(mgv{:},c,v);
+            Colsub = Colsub(:);
             SRCol{lab}(:,:,c,v) = griddata(LFXsub,LFYsub,Colsub,SRXq,SRYq,Method);
         end
         
         % Interpolate disparity
-        LFDispsub = reshape(LFDisp(:,:,1,v),[],1);
-        LFDispsub = LFDispsub(Mask,:);
+        LFDispsub = LFDisp(mgv{:},v);
+        LFDispsub = LFDispsub(:);
         SRDisp{lab}(:,:,1,v) = griddata(LFXsub,LFYsub,LFDispsub,SRXq,SRYq,Method);
         
         % Interpolate label
-        Labelsub = reshape(Label(:,:,1,v),[],1);
-        Labelsub = Labelsub(Mask,:);
+        Labelsub = Label(mgv{:},v);
+        Labelsub = Labelsub(:);
         Lab = griddata(LFXsub,LFYsub,Labelsub,SRXq,SRYq,'nearest');
         
         % Replace out of boundary values in label using cubic interpolation