### Godot version

4.2-stable_mono

### System information

Windows 10, NVidiaRTX 2070

### Issue description

After updating to 4.2 I've realized that all my tweens working with the property "modulate" or "self_modulate" were behaving strangely... it happens when you use loops..  for instance if you have:

```
tween.SetLoop();
tween.TweenProperty(godotObject, "modulate", Colors.Red, 0.5f)
tween.TweenProperty(godotObject, "modulate", Colors.Blue, 0.5f);
```

that object should change its color from red to blue and then from blue to red and then loop, right? (basically, because its final value should be blue)

well, after 4.2 .. the color resets to its default color before starting a new loop, this didn't happen on older versions.
If you don't use Loops its final value persists, so the problem is only when using Loops.

so, for example if you had a modulate value of White before starting the loop.. the tween will change its modulate from red to blue, then resets to white and then start over again... 

* I haven't tested on GDScript

### Steps to reproduce

1- Create a CanvasItem such as a white ColorRect, so that you can tween its modulate property.
2- Attach a script that runs the following code (C#):

```
  tweener = this.CreateTween();
  tweener.SetLoops(0);
  tweener.SetEase(Tween.EaseType.Out);
  tweener.TweenProperty(godotObject, "modulate", Colors.Red, 0.5f);
  tweener.TweenProperty(godotObject, "modulate", Colors.Blue, 0.5f);
```

The modulate will change its value to default each time before starting a new loop

### Minimal reproduction project

N/A
EASE_IN,
		EASE_OUT,
		EASE_IN_OUT,
		EASE_OUT_IN,
		EASE_MAX
	};
private:
	TweenProcessMode process_mode = TweenProcessMode::TWEEN_PROCESS_IDLE;
	TweenPauseMode pause_mode = TweenPauseMode::TWEEN_PAUSE_BOUND;
	TransitionType default_transition = TransitionType::TRANS_LINEAR;
	EaseType default_ease = EaseType::EASE_IN_OUT;
	ObjectID bound_node;
	Vector<List<Ref<Tweener>>> tweeners;
	double total_time = 0;
	int current_step = -1;
	int loops = 1;
	int loops_done = 0;
	float speed_scale = 1;
	bool is_bound = false;