diff --git a/boot/bootutil/src/bootutil_priv.h b/boot/bootutil/src/bootutil_priv.h
index 4c12916..ba5471d 100644
--- a/boot/bootutil/src/bootutil_priv.h
+++ b/boot/bootutil/src/bootutil_priv.h
@@ -166,6 +166,32 @@
     return state->imgs[slot].sectors[sector].fa_size;
 }
 
+/*
+ * Offset of the sector from the beginning of the image, NOT the flash
+ * device.
+ */
+static inline uint32_t
+boot_img_sector_off(struct boot_loader_state *state, size_t slot,
+                    size_t sector)
+{
+    return state->imgs[slot].sectors[sector].fa_off -
+           state->imgs[slot].sectors[0].fa_off;
+}
+
+/*
+ * Offset of the slot from the beginning of the flash device.
+ */
+static inline uint32_t
+boot_img_slot_off(struct boot_loader_state *state, size_t slot)
+{
+    /*
+     * When using flash_area_to_sectors(), "sectors" are actually
+     * flash areas. Flash areas have offsets relative to the beginning
+     * of their flash device.
+     */
+    return state->imgs[slot].sectors[0].fa_off;
+}
+
 static inline size_t boot_scratch_area_size(struct boot_loader_state *state)
 {
     return state->scratch_sector.fa_size;
diff --git a/boot/bootutil/src/loader.c b/boot/bootutil/src/loader.c
index e6d3b5c..18db4af 100644
--- a/boot/bootutil/src/loader.c
+++ b/boot/bootutil/src/loader.c
@@ -784,7 +784,6 @@
 {
     uint8_t slot;
     uint32_t last_sector;
-    struct flash_area *sectors;
     int rc;
 
     switch (flash_area_id) {
@@ -799,9 +798,8 @@
     }
 
     last_sector = boot_img_num_sectors(&boot_data, slot) - 1;
-    sectors = boot_data.imgs[slot].sectors;
     rc = boot_erase_sector(flash_area_id,
-            sectors[last_sector].fa_off - sectors[0].fa_off,
+            boot_img_sector_off(&boot_data, slot, last_sector),
             boot_img_sector_size(&boot_data, slot, last_sector));
     assert(rc == 0);
 
@@ -833,14 +831,13 @@
     int rc;
 
     /* Calculate offset from start of image area. */
-    img_off = boot_data.imgs[0].sectors[idx].fa_off -
-              boot_data.imgs[0].sectors[0].fa_off;
+    img_off = boot_img_sector_off(&boot_data, 0, idx);
 
     copy_sz = sz;
     trailer_sz = boot_slots_trailer_sz(boot_data.write_sz);
 
     /* sz in this function is always is always sized on a multiple of the
-     * sector size. The check against the first address of the last sector
+     * sector size. The check against the start offset of the last sector
      * is to determine if we're swapping the last sector. The last sector
      * needs special handling because it's where the trailer lives. If we're
      * copying it, we need to use scratch to write the trailer temporarily.
@@ -849,8 +846,7 @@
      * controls if special handling is needed (swapping last sector).
      */
     last_sector = boot_img_num_sectors(&boot_data, 0) - 1;
-    if (boot_data.imgs[0].sectors[idx].fa_off + sz >
-        boot_data.imgs[0].sectors[last_sector].fa_off) {
+    if (img_off + sz > boot_img_sector_off(&boot_data, 0, last_sector)) {
         copy_sz -= trailer_sz;
     }
 
@@ -1283,7 +1279,7 @@
 
     /* Always boot from the primary slot. */
     rsp->br_flash_id = boot_img_fa_device_id(&boot_data, 0);
-    rsp->br_image_addr = boot_data.imgs[0].sectors[0].fa_off;
+    rsp->br_image_addr = boot_img_slot_off(&boot_data, 0);
     rsp->br_hdr = boot_img_hdr(&boot_data, slot);
 
     return 0;
@@ -1350,7 +1346,7 @@
         goto done;
     }
 
-    entry_val = boot_data.imgs[split_slot].sectors[0].fa_off +
+    entry_val = boot_img_slot_off(&boot_data, split_slot) +
                 boot_img_hdr(&boot_data, split_slot)->ih_hdr_size;
     *entry = (void *) entry_val;
     rc = SPLIT_GO_OK;
