What I'm trying to accomplish is creating a "Reputation" Bar with a range of 0-100 that changes color depending on the value.

On the bad end (0) I want a dark, brooding color or a bright (YOU DIED!) kind of color. So maybe a dark maroon or a bright red or something like that.

On the good end (100) I want something happy and cheerful like a bright green or blue or something.

I'm pretty for-sure that color values don't work anything like I want them to.

So what I'm trying to do is something like this.

It works at the ends but it doesn't work in the middle where everything turns dark and muddy.

I've tried various combinations of colors using the Color Constants (vbRed, vbBlue, etc.).

Usually vbCyan as GOOD_COLOR and vbRed as BAD_COLOR.

No matter what combination I choose, the middle doesn't work.

So ultimately, it's not this I want to fix. I just want to accomplish the thing where I achieve a nice blend between the two colors. But it's not a blend. It's a solid color. The color should be part of a nice blend is what I'm saying.

Code:
Private Sub UpdateReputationBar
Const GOOD_COLOR As Long = &HFF00& ' A green color.
Const BAD_COLOR as Long = &H8080FF ' A red color.


linReputation.BorderColor = BAD_COLOR + (((GOOD_COLOR - BAD_COLOR) * Player.Reputation) / REPUTATION_CAP)


End Sub