diff --git a/src/Tests.cpp b/src/Tests.cpp
index 1810d65..aececf3 100644
--- a/src/Tests.cpp
+++ b/src/Tests.cpp
@@ -667,6 +667,7 @@
 
 void SaveAllocatorStatsToFile(const wchar_t* filePath)
 {
+    wprintf(L"Saving JSON dump to file \"%s\"\n", filePath);
     char* stats;
     vmaBuildStatsString(g_hAllocator, &stats, VK_TRUE);
     SaveFile(filePath, stats, strlen(stats));
@@ -1719,8 +1720,13 @@
             }
         }
 
-        TEST(stats.allocationsMoved > 0 && stats.bytesMoved > 0);
-        TEST(stats.deviceMemoryBlocksFreed > 0 && stats.bytesFreed > 0);
+        // If corruption detection is enabled, GPU defragmentation may not work on
+        // memory types that have this detection active, e.g. on Intel.
+        if(VMA_DEBUG_DETECT_CORRUPTION == 0)
+        {
+            TEST(stats.allocationsMoved > 0 && stats.bytesMoved > 0);
+            TEST(stats.deviceMemoryBlocksFreed > 0 && stats.bytesFreed > 0);
+        }
     }
 
     ValidateGpuData(allocations.data(), allocations.size());
@@ -2877,6 +2883,8 @@
         VkDeviceSize totalSize = 0;
         while(totalSize < poolCreateInfo.blockSize / 3)
         {
+            // This test intentionally allows sizes that are aligned to 4 or 16 bytes.
+            // This is theoretically allowed and already uncovered one bug.
             memReq.size = bufSizeMin + rand.Generate() % (bufSizeMax - bufSizeMin);
             res = vmaAllocateMemory(g_hAllocator, &memReq, &allocCreateInfo, &alloc, nullptr);
             TEST(res == VK_SUCCESS);
@@ -5180,7 +5188,6 @@
     {
         ////////////////////////////////////////////////////////////////////////////////
         // Temporarily insert custom tests here:
-        
         return;
     }
 
diff --git a/src/vk_mem_alloc.h b/src/vk_mem_alloc.h
index 789cf0b..e6bdb49 100644
--- a/src/vk_mem_alloc.h
+++ b/src/vk_mem_alloc.h
@@ -11444,6 +11444,12 @@
     size_t allocIndex;
     VkResult res = VK_SUCCESS;
 
+    if(IsCorruptionDetectionEnabled())
+    {
+        size = VmaAlignUp<VkDeviceSize>(size, sizeof(VMA_CORRUPTION_DETECTION_MAGIC_VALUE));
+        alignment = VmaAlignUp<VkDeviceSize>(alignment, sizeof(VMA_CORRUPTION_DETECTION_MAGIC_VALUE));
+    }
+
     {
         VmaMutexLockWrite lock(m_Mutex, m_hAllocator->m_UseMutex);
         for(allocIndex = 0; allocIndex < allocationCount; ++allocIndex)
@@ -12375,7 +12381,7 @@
     const bool canDefragmentOnCpu = maxCpuBytesToMove > 0 && maxCpuAllocationsToMove > 0 &&
         isHostVisible;
     const bool canDefragmentOnGpu = maxGpuBytesToMove > 0 && maxGpuAllocationsToMove > 0 &&
-        (VMA_DEBUG_DETECT_CORRUPTION == 0 || !(isHostVisible && isHostCoherent));
+        !IsCorruptionDetectionEnabled();
 
     // There are options to defragment this memory type.
     if(canDefragmentOnCpu || canDefragmentOnGpu)
