Is it just me or does the alpha setting of a component (via Component::setAlpha) get applied twice when the component has setBufferedToImage (true) ?
First, Component::paintEntireComponent() uses the alpha in the layer transparency:
g.beginTransparencyLayer (getAlpha()); // first application of alpha
paintComponentAndChildren (g);
g.endTransparencyLayer();
But Component::paintComponent (), which is eventually called by paintComponentAndChildren (), also sets the alpha
g.setColour (Colours::black.withAlpha (getAlpha())); // second application of alpha
g.drawImageAt (bufferedImage, 0, 0);
The result is that the alpha gets applied twice. So a Component with alpha = 0.5 will draw at .25 alpha (.5 * .5).