diff --git a/tests/blit_tests.cpp b/tests/blit_tests.cpp
index a4becd1..dbf5556 100644
--- a/tests/blit_tests.cpp
+++ b/tests/blit_tests.cpp
@@ -972,7 +972,8 @@
         img_info.extent.width = 64;
         img_info.extent.height = 64;
         img_info.tiling = it->tiling;
-        img_info.usage = VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT;
+        img_info.usage = VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT |
+                         VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT;
 
         test_copy_memory_to_image(img_info);
     }
@@ -1042,7 +1043,8 @@
         img_info.extent.width = 64;
         img_info.extent.height = 64;
         img_info.tiling = it->tiling;
-        img_info.usage = VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT;
+        img_info.usage = VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT |
+                         VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT; // Going to fill it before copy
 
         test_copy_image_to_memory(img_info);
     }
@@ -1290,7 +1292,8 @@
         img_info.extent.width = 64;
         img_info.extent.height = 64;
         img_info.tiling = it->tiling;
-        img_info.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT;
+        img_info.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
+                         VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT; // Going to check contents
 
         const VkImageSubresourceRange range =
             vk_testing::Image::subresource_range(img_info, VK_IMAGE_ASPECT_COLOR);
diff --git a/tests/vkrenderframework.cpp b/tests/vkrenderframework.cpp
index 7eb5856..c079045 100644
--- a/tests/vkrenderframework.cpp
+++ b/tests/vkrenderframework.cpp
@@ -319,11 +319,13 @@
 
         if (props.linearTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) {
             img->init((uint32_t)m_width, (uint32_t)m_height, m_render_target_fmt,
-            VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_TILING_LINEAR);
+            VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT,
+            VK_IMAGE_TILING_LINEAR);
         }
         else if (props.optimalTilingFeatures & VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) {
             img->init((uint32_t)m_width, (uint32_t)m_height, m_render_target_fmt,
-            VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_TILING_OPTIMAL);
+            VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT,
+            VK_IMAGE_TILING_OPTIMAL);
         }
         else {
             FAIL() << "Neither Linear nor Optimal allowed for render target";
@@ -789,7 +791,7 @@
     VkImageObj stagingImage(device);
     VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
 
-    stagingImage.init(16, 16, tex_format, VK_IMAGE_USAGE_SAMPLED_BIT, VK_IMAGE_TILING_LINEAR, reqs);
+    stagingImage.init(16, 16, tex_format, VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT | VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT, VK_IMAGE_TILING_LINEAR, reqs);
     VkSubresourceLayout layout = stagingImage.subresource_layout(subresource(VK_IMAGE_ASPECT_COLOR, 0, 0));
 
     if (colors == NULL)
@@ -814,7 +816,7 @@
     view.subresourceRange.arraySize = 1;
 
     /* create image */
-    init(16, 16, tex_format, VK_IMAGE_USAGE_SAMPLED_BIT, VK_IMAGE_TILING_OPTIMAL);
+    init(16, 16, tex_format, VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT, VK_IMAGE_TILING_OPTIMAL);
 
     /* create image view */
     view.image = handle();
diff --git a/tests/vktestframework.cpp b/tests/vktestframework.cpp
index 3ea9bdf..b1af377 100644
--- a/tests/vktestframework.cpp
+++ b/tests/vktestframework.cpp
@@ -251,7 +251,7 @@
     VkImageObj displayImage(image->device());
     VkMemoryPropertyFlags reqs = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT;
 
-    displayImage.init(image->extent().width, image->extent().height, image->format(), 0, VK_IMAGE_TILING_LINEAR, reqs);
+    displayImage.init(image->extent().width, image->extent().height, image->format(), VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT, VK_IMAGE_TILING_LINEAR, reqs);
     displayImage.CopyImage(*image);
 
     filename.append(basename);
