### Godot version

4.1.1-stable

### System information

Windows 10

### Issue description

this will draw black rect

```gdscript

func _draw():
	draw_rect(Rect2i(Vector2i.ZERO, img.get_size()), Color(1, 1, 1, 1), false)

func _draw():
	draw_rect(Rect2i(Vector2i.ZERO, img.get_size()), Color.WHITE, false)

```

![image](https://github.com/godotengine/godot/assets/53877170/dda910f2-e767-47bf-b3f9-7d194fcc7085)

while this will draw white rect

```gdscript

func _draw():
	draw_rect(Rect2i(Vector2i.ZERO, img.get_size()), Color(0.99, 1, 1, 1), false)

```

while this is weird but making circle draws Color(0.99, 1, 1, 1) makes also the _draw_rect to get fixed!

![image](https://github.com/godotengine/godot/assets/53877170/e84862be-0652-49ee-a5f9-435a234bd354)
 

### Steps to reproduce

use Color.WHITE inside any _draw() function or Color(1, 1, 1, 1) and it will draw black color instead of white color

### Minimal reproduction project

N/A
back_buffer_rect = Rect2();
						backbuffer_gen_mipmaps = md->shader_data->uses_screen_texture_mipmaps;
					} else if (!material_screen_texture_mipmaps_cached) {
						backbuffer_gen_mipmaps = md->shader_data->uses_screen_texture_mipmaps;
					}
				}
				if (md->shader_data->uses_sdf) {
					r_sdf_used = true;
				}
				if (md->shader_data->uses_time) {
					time_used = true;
				}
			}
		}
		if (ci->skeleton.is_valid()) {
			const Item::Command *c = ci->commands;
			while (c) {
				if (c->type == Item::Command::TYPE_MESH) {
					const Item::CommandMesh *cm = static_cast<const Item::CommandMesh *>(c);
					if (cm->mesh_instance.is_valid()) {
						mesh_storage->mesh_instance_check_for_update(cm->mesh_instance);
						mesh_storage->mesh_instance_set_canvas_item_transform(cm->mesh_instance, canvas_transform_inverse * ci->final_transform);
						update_skeletons = true;
					}
				}
				c = c->next;
			}
		}
		if (ci->canvas_group_owner != nullptr) {
			if (canvas_group_owner == nullptr) {