diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 7df0fe2db9..f0ed5c6bd4 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -3606,13 +3606,16 @@ virStorageSourceUpdateCapacity(virStorageSourcePtr src,
         src->format = format;
     }
 
-    if (format == VIR_STORAGE_FILE_RAW)
+    if (format == VIR_STORAGE_FILE_RAW && !src->encryption) {
         src->capacity = src->physical;
-    else if ((meta = virStorageFileGetMetadataFromBuf(src->path, buf,
-                                                      len, format, NULL)))
+    } else if ((meta = virStorageFileGetMetadataFromBuf(src->path, buf,
+                                                        len, format, NULL))) {
         src->capacity = meta->capacity ? meta->capacity : src->physical;
-    else
+        if (src->encryption && meta->encryption)
+            src->encryption->payload_offset = meta->encryption->payload_offset;
+    } else {
         goto cleanup;
+    }
 
     if (src->encryption && src->encryption->payload_offset != -1)
         src->capacity -= src->encryption->payload_offset * 512;