### 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
state.light_uniforms[index].atlas_rect[1] = 0;
				state.light_uniforms[index].atlas_rect[2] = 0;
				state.light_uniforms[index].atlas_rect[3] = 0;
			}
			l->render_index_cache = index;
			index++;
			l = l->next_ptr;
		}
		light_count = index;
	}
	if (light_count > 0) {
		glBindBufferBase(GL_UNIFORM_BUFFER, LIGHT_UNIFORM_LOCATION, state.canvas_instance_data_buffers[state.current_data_buffer_index].light_ubo);
#ifdef WEB_ENABLED
		glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(LightUniform) * light_count, state.light_uniforms);
#else
		
		void *ubo = glMapBufferRange(GL_UNIFORM_BUFFER, 0, sizeof(LightUniform) * light_count, GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT);
		memcpy(ubo, state.light_uniforms, sizeof(LightUniform) * light_count);
		glUnmapBuffer(GL_UNIFORM_BUFFER);
#endif
		GLuint texture_atlas = texture_storage->texture_atlas_get_texture();
		if (texture_atlas == 0) {
			GLES3::Texture *tex = texture_storage->get_texture(texture_storage->texture_gl_get_default(GLES3::DEFAULT_GL_TEXTURE_WHITE));
			texture_atlas = tex->tex_id;
		}
		glActiveTexture(GL_TEXTURE0 + GLES3::Config::get_singleton()->max_texture_image_units - 2);
		glBindTexture(GL_TEXTURE_2D, texture_atlas);
		GLuint shadow_tex = state.shadow_texture;
		if (shadow_tex == 0) {
			GLES3::Texture *tex = texture_storage->get_texture(texture_storage->texture_gl_get_default(GLES3::DEFAULT_GL_TEXTURE_WHITE));