diff --git a/satpy/readers/abi_l1b.py b/satpy/readers/abi_l1b.py
index <HASH>..<HASH> 100644
--- a/satpy/readers/abi_l1b.py
+++ b/satpy/readers/abi_l1b.py
@@ -96,10 +96,11 @@ class NC_ABI_L1B(BaseFileHandler):
         lon_0 = projection.attrs['longitude_of_projection_origin'][...]
         sweep_axis = projection.attrs['sweep_angle_axis'][0]
 
-        scale_x = self.nc['x'].attrs["scale_factor"][0]
-        scale_y = self.nc['y'].attrs["scale_factor"][0]
-        offset_x = self.nc['x'].attrs["add_offset"][0]
-        offset_y = self.nc['y'].attrs["add_offset"][0]
+        # need 64-bit floats otherwise small shift
+        scale_x = np.float64(self.nc['x'].attrs["scale_factor"][0])
+        scale_y = np.float64(self.nc['y'].attrs["scale_factor"][0])
+        offset_x = np.float64(self.nc['x'].attrs["add_offset"][0])
+        offset_y = np.float64(self.nc['y'].attrs["add_offset"][0])
 
         # x and y extents in m
         h = float(h)
Update ABI scale factors to be <I>-bit floats to improve X/Y calculations

In other applications I have noticed that the in-file <I>-bit
factor and offset produce a noticeable drift in the per-pixel X/Y
values. When converted to <I>-bit to force <I>-bit arithmetic the results
are closer to the advertised pixel resolution of the instrument.