diff --git a/liblava/resource/texture.cpp b/liblava/resource/texture.cpp
index 61e347fb6726678c4ab2010ed846711f5ccb45b2..6e9ad3f39f4bf5c2df87e8084be4e61400e977a2 100644
--- a/liblava/resource/texture.cpp
+++ b/liblava/resource/texture.cpp
@@ -101,7 +101,7 @@ namespace lava {
     bool texture::upload(void const* data, size_t data_size) {
         upload_buffer = make_buffer();
 
-        return upload_buffer->create(img->get_device(), data, data_size, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, false, VMA_MEMORY_USAGE_CPU_TO_GPU);
+        return upload_buffer->create(img->get_device(), data, data_size, VK_BUFFER_USAGE_TRANSFER_SRC_BIT, false, VMA_MEMORY_USAGE_CPU_ONLY);
     }
 
     bool texture::stage(VkCommandBuffer cmd_buf) {
diff --git a/src/scene.hpp b/src/scene.hpp
index 1f93fc5ce204dfbb2a6bdf36159e4d75ac5ee9b1..5f28946a6a3b98d5b1c3f0312f87e4098eeb1bd7 100644
--- a/src/scene.hpp
+++ b/src/scene.hpp
@@ -212,8 +212,8 @@ private:
     glm::vec3 scene_min = glm::vec3(0.0f);
     glm::vec3 scene_max = glm::vec3(0.0f);
 
-    const glm::vec3 ambient_color = glm::vec3(0.2f); //NOTE: This factor is used so that the Bistro scene looks okay.
-    float exposure = 1.0f;
+    const glm::vec3 ambient_color = glm::vec3(5.0f); //NOTE: This factor is used so that the Bistro scene looks okay.
+    float exposure = 0.1f;                           //NOTE: This factor is used so that the Bistro scene looks okay.
     bool exposure_changed = false;
 
     uint32_t light_directional_count = 0;
diff --git a/src/strategy/multi_view_stereo.cpp b/src/strategy/multi_view_stereo.cpp
index 73546895f37c7fe466a4ebe9114a650509777911..3fe3e1922ec8325009c3f791e31335b2663b1876 100644
--- a/src/strategy/multi_view_stereo.cpp
+++ b/src/strategy/multi_view_stereo.cpp
@@ -133,13 +133,13 @@ bool MultiViewStereo::on_render(VkCommandBuffer command_buffer, lava::index fram
     right_barrier.subresourceRange.baseArrayLayer = 0;
     right_barrier.subresourceRange.layerCount = 1;
 
-    std::array<VkImageMemoryBarrier, 2> barriers = 
+    std::array<VkImageMemoryBarrier, 2> begin_barriers = 
     {
         left_barrier,
         right_barrier
     };
 
-    vkCmdPipelineBarrier(command_buffer, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, nullptr, 0, nullptr, barriers.size(), barriers.data());
+    vkCmdPipelineBarrier(command_buffer, VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, nullptr, 0, nullptr, begin_barriers.size(), begin_barriers.data());
 
     VkImageSubresourceLayers subresource;
     subresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
@@ -180,13 +180,31 @@ bool MultiViewStereo::on_render(VkCommandBuffer command_buffer, lava::index fram
     vkCmdCopyImage(command_buffer, this->color_buffer->get(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, this->get_headset()->get_framebuffer(EYE_LEFT)->get(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &left_copy);
     vkCmdCopyImage(command_buffer, this->color_buffer->get(), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, this->get_headset()->get_framebuffer(EYE_RIGHT)->get(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, &right_copy);
 
-    this->get_frame_capture()->capture_image(command_buffer, this->get_headset()->get_framebuffer(EYE_LEFT), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "left_eye");
-    this->get_companion_window()->submit_image(command_buffer, EYE_LEFT, this->get_headset()->get_framebuffer(EYE_LEFT), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
-    this->get_headset()->submit_frame(command_buffer, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, EYE_LEFT);
+    left_barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
+    left_barrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
+    left_barrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
+    left_barrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
 
-    this->get_frame_capture()->capture_image(command_buffer, this->get_headset()->get_framebuffer(EYE_RIGHT), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, "right_eye");
-    this->get_companion_window()->submit_image(command_buffer, EYE_RIGHT, this->get_headset()->get_framebuffer(EYE_RIGHT), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
-    this->get_headset()->submit_frame(command_buffer, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, EYE_RIGHT);
+    right_barrier.srcAccessMask = VK_ACCESS_TRANSFER_WRITE_BIT;
+    right_barrier.dstAccessMask = VK_ACCESS_TRANSFER_READ_BIT;
+    right_barrier.oldLayout = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL;
+    right_barrier.newLayout = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL;
+
+     std::array<VkImageMemoryBarrier, 2> end_barriers = 
+    {
+        left_barrier,
+        right_barrier
+    };
+
+    vkCmdPipelineBarrier(command_buffer, VK_PIPELINE_STAGE_TRANSFER_BIT, VK_PIPELINE_STAGE_TRANSFER_BIT, 0, 0, nullptr, 0, nullptr, end_barriers.size(), end_barriers.data());
+
+    this->get_frame_capture()->capture_image(command_buffer, this->get_headset()->get_framebuffer(EYE_LEFT), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, "left_eye");
+    this->get_companion_window()->submit_image(command_buffer, EYE_LEFT, this->get_headset()->get_framebuffer(EYE_LEFT), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
+    this->get_headset()->submit_frame(command_buffer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, EYE_LEFT);
+
+    this->get_frame_capture()->capture_image(command_buffer, this->get_headset()->get_framebuffer(EYE_RIGHT), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, "right_eye");
+    this->get_companion_window()->submit_image(command_buffer, EYE_RIGHT, this->get_headset()->get_framebuffer(EYE_RIGHT), VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
+    this->get_headset()->submit_frame(command_buffer, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, EYE_RIGHT);
 
     return true;
 }