Если ваша основная проблема с «накладными расходами» заключается в том, что вы хотите сделать их непрозрачными только тогда, когда мышь входит в непрозрачную часть изображения, я бы посоветовал предварительно вычислить «маску» для изображения.
При загрузке изображения создайте другое изображение (или двумерный массив, или что-то подобное), которое будет двоичным (т.е. только черно-белое или только значения 1 и 0 в массиве).0 / белый = прозрачный, 1 / черный = непрозрачный.
Затем, при событиях мыши, вы можете просто проверить точный пиксель в маске, если он установлен (значение = черный или 1), и вызватьесли это так.