¿Escala imágenes con PIL conservando transparencia y color?

Diga que desea escalar una imagen transparente pero aún no sabe el color o los colores del fondo en los que la compondrá más adelante. Desafortunadamente, PIL parece incorporar los valores de color de los píxeles totalmente transparentes que conducen a malos resultados. ¿Hay una manera de decirle al tamaño de PIL que ignore los píxeles totalmente transparentes?

import PIL.Image

filename = "trans.png"  # http://qrc-designer.com/stuff/trans.png
size = (25,25)

im = PIL.Image.open(filename)
print im.mode  # RGBA

im = im.resize(size, PIL.Image.LINEAR)  # the same with CUBIC, ANTIALIAS, transform
# im.show()  # does not use alpha
im.save("resizelinear_"+filename)


# PIL scaled image has dark border

Imagen original con fondo (0,0,0,0) (negro pero totalmente transparente) (izquierda)

imagen de salida con halo negro (centro)

Salida adecuada escalada con gimp (derecha)

edición: Parece que para lograr lo que estoy buscando tendría que modificar el muestreo de la función de cambio de tamaño en sí, de manera que ignoraría los píxeles con total transparencia.

edit2: He encontrado una solución muy fea. Establece los valores de color de los píxeles totalmente transparentes en el promedio de los píxeles circundantes no totalmente transparentes para minimizar el impacto de los colores de píxeles totalmente transparentes mientras se redimensiona. Es lento en la forma simple pero lo publicaré si no hay otra solución. Podría ser posible hacerlo más rápido utilizando una operación de dilatación para procesar solo los píxeles necesarios.

edit3: el alfa premultiplicado es el camino a seguir - vea la respuesta de Mark

Respuestas a la pregunta(4)

Su respuesta a la pregunta