Didn’t you say Spencer’s example made the trick?
Here is another idea just in case:
You need to create a wrapper that will serve as a scrolling container (the 100vh sections with content should be inside).
Paste a fixed div into it and make sure it has lower z-index than your content sections ( fixed div should have a height of 100vh, and 100% of width), this div will act as a background that change colour.
Then just create scroll animation on the wrapper that will target the fixed div. And simply create points of bg change on the timeline (since your sections are of a screen height height you can just divide the timeline into the amount of section to set points of change - 33% if there are 3 sections, 50% if there are 2 sections etc).
This will give you a framework with which you will be able to fiddle to come with the final design.
edit: oh, didn’t see your edit. OK, anyway, let this stay.