diff --git a/Sources/backends/spirv.c b/Sources/backends/spirv.c
index bd82f83..bbf2f04 100644
--- a/Sources/backends/spirv.c
+++ b/Sources/backends/spirv.c
@@ -336,6 +336,7 @@ static uint32_t spirv_uint_type;
 static uint32_t spirv_float2_type;
 static uint32_t spirv_float3_type;
 static uint32_t spirv_float4_type;
+static uint32_t spirv_float4_pointer_output_type;
 
 typedef struct complex_type {
 	type_id type;
@@ -400,6 +401,8 @@ static void write_base_types(instructions_buffer *constants, type_id vertex_inpu
 	spirv_float4_type = convert_type_to_spirv_index(float4_id);
 	write_type_vector_preallocated(constants, spirv_float_type, 4, spirv_float4_type);
 
+	spirv_float4_pointer_output_type = write_type_pointer(constants, STORAGE_CLASS_OUTPUT, spirv_float4_type);
+
 	spirv_uint_type = write_type_int(constants, 32, false);
 	spirv_int_type = write_type_int(constants, 32, true);
 
@@ -984,7 +987,7 @@ static void spirv_export_fragment(char *directory, function *main) {
 
 	write_base_types(&constants, NO_TYPE);
 
-	write_op_variable_with_result(&instructions, spirv_float4_type, output_var, STORAGE_CLASS_OUTPUT);
+	write_op_variable_with_result(&instructions, spirv_float4_pointer_output_type, output_var, STORAGE_CLASS_OUTPUT);
 
 	write_functions(&instructions, main, entry_point, SHADER_STAGE_FRAGMENT, pixel_input, input_var, NO_TYPE, output_var);