Quick answer: Use image.convert_alpha(), not image.convert(). Per-pixel alpha preserved.
PNG with translucent edges. load(...).convert(). Edges become opaque squares. convert() drops alpha.
The Fix
# Drops alpha
# img = pygame.image.load("sprite.png").convert()
# Preserves per-pixel alpha
img = pygame.image.load("sprite.png").convert_alpha()
screen.blit(img, (10, 10)) # translucent edges blend correctly
convert_alpha is the canonical fix. For opaque sprites, convert is faster; pick by content.
Verifying
PNG with soft edges: smooth blend with background. With convert(): hard edges, magenta-style square.
“convert_alpha for translucent. convert for opaque.”
Related Issues
For collide_mask, see collide_mask. For PyInstaller, see PyInstaller.
convert_alpha. Edges blend.