I recently checked what could be the problem regarding our startbutton drawing and came to the following conclusion:
in traywnd.cpp the contents of the start button is drawn with CreateBitmap to a HBITMAP and then via DrawCaptionTemp to the button itself if I understand the code correct.
This seems to be the reason for several bugs, that (at least some of them) also happen on Windows.
When we change to a different classic theme, the button does not get repaint until restart, but only the part which would be inside the activation mark. See
the same happens for UX Themes. Only this part of the button is not correctly repainted.
After the restart using an UX Theme, when the correct bmp is drawn, one can see that this bitmap is also stretched inside this part, and not drawn over the complete button as it should, this also happen in windows. See
Another thing which is not correct is that the button uses an icon (Resource ID 4711, I chose this because this resource doesn't exist in Windows) but in windows it uses a bitmap (probably Resource ID 143)
This is also because DrawCaptionTemp only accepts an icon as parameter AFAIK.
I attached some pcitures which show that only the inner part of the button is drawn.