Hey there, I have some widget that displays differently from mac to pc. I use a drawImage function to paint on them. If I use “fill with current brush” on PC, it behaves correctly, the pixel with >0 alpha get filled with the brush color, but on MAC, the pixel with >0 alpha get filled with the bursh color AS WELL as the outside of the image, and/or even the last or first column of pixel.
void Rotary1::paint(juce::Graphics& g)
{
g.setColour(draw_colour);
g.beginTransparencyLayer(1.f);
g.addTransform(juce::AffineTransform().translated(-getWidth() / 8.f, -getHeight() / 4.f));
g.drawImage(rotary, 0, 0, getWidth(), getHeight(), 0, 0, rotary.getWidth(), rotary.getHeight(), true);
g.addTransform(juce::AffineTransform().rotated(dtr * 270 * get_value(), getWidth() / 2.f, getHeight() / 2.f));
g.drawImage(top, 0, 0, getWidth(), getHeight(), 0, 0, top.getWidth(), top.getHeight(), true);
g.addTransform(juce::AffineTransform().rotated(dtr * -270 * get_value(), getWidth() / 2.f, getHeight() / 2.f));
g.reduceClipRegion(clip, get_transform_to_fit(clip.getWidth(), clip.getHeight(), getWidth(), getHeight()));
g.addTransform(juce::AffineTransform().rotated(dtr * 270 * get_value(), getWidth() / 2.f, getHeight() / 2.f));
g.drawImage(grip, 0, 0, getWidth(), getHeight(), 0, 0, grip.getWidth(), grip.getHeight(), true);
g.endTransparencyLayer();
g.beginTransparencyLayer(1.f);
juce::Path p = get_arc(-135.f, 135.f, 10.f, get_value(), getLocalBounds().reduced(getWidth() / 8).translated(getWidth() / 8, getHeight() / 4).toFloat());
juce::PathStrokeType pst(getWidth() / 4.f);
pst.createStrokedPath(p, p);
p.applyTransform(juce::AffineTransform().translated(0, -getHeight() / 8.F));
g.addTransform(juce::AffineTransform().translated(-getWidth() / 8.f, -getHeight() / 4.f));
g.reduceClipRegion(p);
g.setColour(color_fill);
g.drawImage(fill, 0, 0, getWidth(), getHeight(), 0, 0, fill.getWidth(), fill.getHeight(), true);
g.endTransparencyLayer();
}