diff --git a/zUtil_ForwardSim/gtGetRawRoi.m b/zUtil_ForwardSim/gtGetRawRoi.m
index 18f69b9838d3af611ddce72673c93cbcc446b65d..3da3841612144ffddc7e3310d22f329315a7b321 100644
--- a/zUtil_ForwardSim/gtGetRawRoi.m
+++ b/zUtil_ForwardSim/gtGetRawRoi.m
@@ -8,11 +8,17 @@ function [spot, m] = gtGetRawRoi(start_image, end_image, acq, bb)
     nimages = end_image - start_image + 1;
     spot    = zeros(bb(4), bb(3), nimages);
     m       = zeros(nimages, 1);
-    centerx = round((bb(3)/2 -5) : (bb(3)/2 +5));
-    centery = round((bb(4)/2 -5) : (bb(4)/2 +5));
+    centeru = round((bb(3)/2 -5) : (bb(3)/2 +5));
+    centerv = round((bb(4)/2 -5) : (bb(4)/2 +5));
+
+    % Let's restrict the loading to "with-in" the limits
+    if all([bb(1)+bb(3) >= 1, bb(1) <= acq.xdet, bb(2)+bb(4) >= 1, bb(2) <= acq.ydet])
+        spot_range_u = (max(bb(1), 1) - bb(1) + 1):(min(bb(1)+bb(3)-1, acq.xdet) - bb(1) + 1);
+        spot_range_v = (max(bb(2), 1) - bb(2) + 1):(min(bb(2)+bb(4)-1, acq.ydet) - bb(2) + 1);
+
+        real_bb = [max(bb(1:2), 1), ...
+            (min(bb(1:2) + bb(3:4) - 1, [acq.xdet, acq.ydet]) - max(bb(1:2), 1) + 1)];
 
-    % was < acq.xdet and < acq.ydet
-    if all([bb(1) > 0, bb(2) > 0, bb(1)+bb(3) <= acq.xdet, bb(2)+bb(4) <= acq.ydet])
         fullImgsDir = fullfile(acq.dir, '1_preprocessing', 'full');
         indexes = mod(start_image : end_image, tot_images);
         filename = fullfile(fullImgsDir, sprintf('full%04d.edf', indexes(1)));
@@ -20,8 +26,8 @@ function [spot, m] = gtGetRawRoi(start_image, end_image, acq, bb)
 
         for img_n = 1:nimages
             fullImgName = fullfile(fullImgsDir, sprintf('full%04d.edf', indexes(img_n)));
-            spot(:, :, img_n) = edf_read(fullImgName, bb, [], info);
-            m(img_n) = gtImgMeanValue(spot(centery, centerx, img_n));
+            spot(spot_range_v, spot_range_u, img_n) = edf_read(fullImgName, real_bb, [], info);
+            m(img_n) = gtImgMeanValue(spot(centerv, centeru, img_n));
         end
     end
 end