I am not sure if I understand your posting correctly since 32bpp images definitely are not converted to b&w - see attachment showing the pale blue "thermometer" icon of the collection - and since it does not explain why Ubuntu behaves differently from Windows.
In the newly attached Windows screenshot the 32bpp and 24bpp look fine only on gray background, on the darker blue background, however, the 24 bpp glyph suffers from a strong bright border. This is because there seem to be some semi-transparent pixels along the outline of the thermometer and waterdrops. The image processing program used for converting the original 32bpp image to 24 bpp (xnview) assumes a white background when reducing color depth. Therefore, this background shines through for the outer pixels. Since there is no more transparency for the 24 bpp these icons look very strange on the dark background, but are okay on the bright background.
The 32 bpp icons are perfect in case of Windows. But in Ubuntu, the outline of the 32bpp images is missing (the 24 bpp images look the same as in Windows). Obviously, Ubuntu does not handle the alpha channel in the same way as Windows.
The question is: Is this an issue of Ubuntu (I am using 12.04 in a VirtualBox), or of my program? An argument against blaming Ubuntu is that is shows very strong transparency effects in relation with the Dash window indicating that it can handle transparency very well. So again, what is wrong with my program?