Can you upload your title file for inspection?
Annaël Beauchemin wrote:Still, lots of programs do not make the distinction that it's the color values that get multiplied and not the alpha. I assume this is done to simplify the text. Also, correct me if I am wrong, but the "Premultiplied" Alpha mode in Resolve should be written "Premultiplied with Black".
So let me rephrase my answer to the OP:
In AE, when you export an alpha with Premultiplied color values, the background color of the composition gets multiplied. In Resolve, setting the Alpha mode to "Premultiplied" assumes that the color of the premultiplication was black. So if your background what anything but black in AE, Resolve will not unmultiply the color values correctly when it is composited in Resolve. So you should either export in Straight alpha (my personal favorite since this is the default of Resolve), or you should set to black the background color of your AE composition and re-render with premultiplied color values.
How does that sounds?
Some thoughts, might help narrow down the problem area... "Premultiplied with Black" is kind of meaningless because if we look at what premult actually is, there is no multiplication with black anywhere. The classical over blend or so-called compositing operation (which is nothing more than linear interpolation between two values) is expressed as C = A * alphaA + B * (1.0 - alphaA). The premultiplication part is the A * alphaA and its reasoning is that since both A and alphaA are known at the time of storing the A image, this multiplication operation can be done beforehand, simplifying the compositing computation. So premultiplication is the multiplication of RGB channel values of image A with respective alpha of that pixel. Not multiplication with black, not multiplication with color. Alpha channel has no color, it is non-color data, and RGB channels express the image itself. Since alpha is zero where there is no "coverage", RGB values are scaled to 0.0 value for those pixels which looks black when viewed. Straight alpha simply means that this multiplication operation is not performed and RGB values are stored as-is.
Now, if we have an image, lets say white text on yellow backgound, and we have alpha channel for the text, we could say the image is matted with yellow in AE speak. This means that our text element has been already merged with yellow bg using the over operation above, so we have our C, and we have our alphaA. By acknowledging that our background is yellow we can also tell our software what B was. This allows to regain the A value: A = (C - (B * (1.0 - alphaA))) / alphaA. There is no practical benefit from compositing standpoint for doing this, it is always preferable to have just pure unpremultiplied image or premulted one (which can help with data compression due to zero alpha pixels being also zeroed in RGB channels). Historical reason why this is "a thing" is afaik that this "matted with color" option allows having the final composited graphics for nice viewing while still attaching the alpha too in case soneone wants to pick it apart again. And this in turn is the reason why some formats store RGB data in original not premultiplied form, png for example. Because multing would lose the bg and just leave the ugly color contamination fringe in semitransparent areas, not nice for the hovering art director. And even if image is actually premulted, knowing the bg color can still help in reproducing original values and thus removing the contamination. This property is the basis for some fg color restoration methods in keying for example.