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.