refacced to path instead of direct canvas draw to avoid overlap alpha blending