diff --git a/include/Refresh.h b/include/Refresh.h
index a532301..149a4a8 100644
--- a/include/Refresh.h
+++ b/include/Refresh.h
@@ -797,7 +797,7 @@ REFRESHAPI REFRESH_Texture* REFRESH_CreateTextureCube(
 REFRESHAPI REFRESH_ColorTarget* REFRESH_CreateColorTarget(
 	REFRESH_Device *device,
 	REFRESH_SampleCount multisampleCount,
-	REFRESH_TextureSlice textureSlice
+	REFRESH_TextureSlice *textureSlice
 );
 
 /* Creates a depth/stencil target.
@@ -1273,19 +1273,19 @@ REFRESHAPI void REFRESH_BindIndexBuffer(
 
 /* Submission/Presentation */
 
-/* Prepares for an image to be presented to the screen.
+/* Queues an image to be presented to the screen.
  * The image will be presented upon the next REFRESH_Submit call.
  *
  * NOTE:
  *		It is an error to call this function in headless mode.
  *
- * texture:					The image to present.
+ * textureSlice:			The texture slice to present.
  * sourceRectangle:			The region of the image to present (or NULL).
  * destinationRectangle:	The region of the window to update (or NULL).
  */
-REFRESHAPI void REFRESH_PreparePresent(
+REFRESHAPI void REFRESH_QueuePresent(
 	REFRESH_Device *device,
-	REFRESH_Texture* texture,
+	REFRESH_TextureSlice *textureSlice,
 	REFRESH_Rect *sourceRectangle,
 	REFRESH_Rect *destinationRectangle
 );
diff --git a/src/Refresh.c b/src/Refresh.c
index 67daf8e..7e4ccde 100644
--- a/src/Refresh.c
+++ b/src/Refresh.c
@@ -347,7 +347,7 @@ REFRESH_Texture* REFRESH_CreateTextureCube(
 REFRESH_ColorTarget* REFRESH_CreateColorTarget(
 	REFRESH_Device *device,
     REFRESH_SampleCount multisampleCount,
-	REFRESH_TextureSlice textureSlice
+	REFRESH_TextureSlice *textureSlice
 ) {
     NULL_RETURN_NULL(device);
     return device->CreateColorTarget(
@@ -835,16 +835,16 @@ void REFRESH_BindIndexBuffer(
     );
 }
 
-void REFRESH_PreparePresent(
+void REFRESH_QueuePresent(
     REFRESH_Device *device,
-    REFRESH_Texture *texture,
+    REFRESH_TextureSlice* textureSlice,
     REFRESH_Rect *sourceRectangle,
     REFRESH_Rect *destinationRectangle
 ) {
     NULL_RETURN(device);
-    device->PreparePresent(
+    device->QueuePresent(
         device->driverData,
-        texture,
+        textureSlice,
         sourceRectangle,
         destinationRectangle
     );
diff --git a/src/Refresh_Driver.h b/src/Refresh_Driver.h
index b793e3c..2db64f6 100644
--- a/src/Refresh_Driver.h
+++ b/src/Refresh_Driver.h
@@ -269,7 +269,7 @@ struct REFRESH_Device
     REFRESH_ColorTarget* (*CreateColorTarget)(
         REFRESH_Renderer *driverData,
         REFRESH_SampleCount multisampleCount,
-        REFRESH_TextureSlice textureSlice
+        REFRESH_TextureSlice *textureSlice
     );
 
     REFRESH_DepthStencilTarget* (*CreateDepthStencilTarget)(
@@ -505,9 +505,9 @@ struct REFRESH_Device
         REFRESH_IndexElementSize indexElementSize
     );
 
-    void(*PreparePresent)(
+    void(*QueuePresent)(
         REFRESH_Renderer *driverData,
-        REFRESH_Texture *texture,
+        REFRESH_TextureSlice *textureSlice,
         REFRESH_Rect *sourceRectangle,
         REFRESH_Rect *destinationRectangle
     );
@@ -567,7 +567,7 @@ struct REFRESH_Device
     ASSIGN_DRIVER_FUNC(BindGraphicsPipeline, name) \
     ASSIGN_DRIVER_FUNC(BindVertexBuffers, name) \
     ASSIGN_DRIVER_FUNC(BindIndexBuffer, name) \
-    ASSIGN_DRIVER_FUNC(PreparePresent, name) \
+    ASSIGN_DRIVER_FUNC(QueuePresent, name) \
     ASSIGN_DRIVER_FUNC(Submit, name)
 
 typedef struct REFRESH_Driver
diff --git a/src/Refresh_Driver_Vulkan.c b/src/Refresh_Driver_Vulkan.c
index 149288e..3e5fc33 100644
--- a/src/Refresh_Driver_Vulkan.c
+++ b/src/Refresh_Driver_Vulkan.c
@@ -3620,7 +3620,7 @@ static REFRESH_Texture* VULKAN_CreateTextureCube(
 static REFRESH_ColorTarget* VULKAN_CreateColorTarget(
 	REFRESH_Renderer *driverData,
 	REFRESH_SampleCount multisampleCount,
-	REFRESH_TextureSlice textureSlice
+	REFRESH_TextureSlice *textureSlice
 ) {
 	VkResult vulkanResult;
 	VulkanRenderer *renderer = (VulkanRenderer*) driverData;
@@ -3628,7 +3628,7 @@ static REFRESH_ColorTarget* VULKAN_CreateColorTarget(
 	VkImageViewCreateInfo imageViewCreateInfo;
 	VkComponentMapping swizzle = IDENTITY_SWIZZLE;
 
-	colorTarget->texture = (VulkanTexture*) textureSlice.texture;
+	colorTarget->texture = (VulkanTexture*) textureSlice->texture;
 	colorTarget->multisampleTexture = NULL;
 	colorTarget->multisampleCount = 1;
 
@@ -3679,7 +3679,7 @@ static REFRESH_ColorTarget* VULKAN_CreateColorTarget(
 	imageViewCreateInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;
 	imageViewCreateInfo.subresourceRange.baseMipLevel = 0;
 	imageViewCreateInfo.subresourceRange.levelCount = 1;
-	imageViewCreateInfo.subresourceRange.baseArrayLayer = textureSlice.layer;
+	imageViewCreateInfo.subresourceRange.baseArrayLayer = textureSlice->layer;
 	imageViewCreateInfo.subresourceRange.layerCount = 1;
 	imageViewCreateInfo.viewType = VK_IMAGE_VIEW_TYPE_2D;
 
@@ -4756,9 +4756,9 @@ static void VULKAN_BindIndexBuffer(
 	));
 }
 
-static void VULKAN_PreparePresent(
+static void VULKAN_QueuePresent(
 	REFRESH_Renderer* driverData,
-	REFRESH_Texture* texture,
+	REFRESH_TextureSlice* textureSlice,
 	REFRESH_Rect* sourceRectangle,
 	REFRESH_Rect* destinationRectangle
 ) {
@@ -4769,12 +4769,12 @@ static void VULKAN_PreparePresent(
 	REFRESH_Rect dstRect;
 	VkImageBlit blit;
 
-	VulkanRenderer* renderer = (VulkanRenderer*)driverData;
-	VulkanTexture* vulkanTexture = (VulkanTexture*)texture;
+	VulkanRenderer* renderer = (VulkanRenderer*) driverData;
+	VulkanTexture* vulkanTexture = (VulkanTexture*) textureSlice->texture;
 
 	if (renderer->headless)
 	{
-		REFRESH_LogError("Cannot call PreparePresent in headless mode!");
+		REFRESH_LogError("Cannot call QueuePresent in headless mode!");
 		return;
 	}
 
@@ -4870,7 +4870,7 @@ static void VULKAN_PreparePresent(
 	blit.dstOffsets[1].z = 1;
 
 	blit.dstSubresource.mipLevel = 0;
-	blit.dstSubresource.baseArrayLayer = 0;
+	blit.dstSubresource.baseArrayLayer = textureSlice->layer;
 	blit.dstSubresource.layerCount = 1;
 	blit.dstSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT;