I did some testing with this, and it only appears to happen with the Vertical Fall. It seems the last color you select for a vertical fall is what all other vertical fall matrices change to.
The good thing is, if you save your project, load a different project, then reload your original project, everything works normally, UNTIL you click on a Vertical Fall in the Functions Screen.
I am also reproducing this issue on QLC+ 4.12.3 on macOS 10.15.7.
An additional thing I have found:
In my Virtual Console, I have a panel with buttons that toggle various Vertical Fall animations of different colors. As I toggle these buttons, the colors don't seem to change (possible related bug), but instead, the speed of the Vertical Fall animation seems to multiply (or divide the duration, rather) by the number of vertical fall buttons toggled on (not sure if this is related to the original bug, or different).
I do have a single speed dial connected to each of my vertical fall animations, and I also probably created them by copy & pasting the first vertical fall, and then changing its color. I will have to check and see if creating each animation new instead of copy paste make any difference.
Sorry for my large project- but the behavior can be seen by enabling the 2D view, then toggling a few buttons in the "Vertical Fall" panel at the bottom center of my Virtual Console.
Ok .. Verified behavior in 4.12.3 on MacOS. I checked out the Javascript and tested it a few times and a few different ways:
Downloaded the example scripts here.. validated bad behavior in DMX view under Run mode .. and by moving between Matrix scripts.
Tried testing the script in the devtool.html and couldnt' get it to fail .. tried several different ways and it worked consistently.
Tried updating the running script a few ways.. and wasn't able to remove bad behavior. I even tried converting the script to api v2.
One note .. I was able to successfully 'reset' the situation and get the right color by firing off a different RGB script between them. My c++ is merde.. so no luck identifying it in the code base,.