A better way to mix colours ( image ) + mix node going into shader colour input
The alpha channel is always separate than the image, that is why it is available as a separate socket and can be used independently than the RGB information. In other words the Color output socket for the image node ignores the alpha channel, you must use the alpha output socket to use it as control on other nodes.

Also, you don't need to invert the alpha channel if you connect the Image node to the bottom socket. Just feed the color output to the bottom socket and set the other color on the top one.



It's easier if you think of the alpha channel as a mask.

Read the following links:

Overlay more than one transparent images in one shader

and

Change Color Associated with Transparency?

and:

Transparent image like a decal on mesh with principled BSDF shader

and 

Add a transparent image on top of a material