When animate() is fed alpha values, it seems that the animation doesn't correctly select the initial appearance, and further any animation step in which there is not a change in alpha seems to set alpha to 0 for the duration of that step.
Code Snippet (if applicable) to Reproduce Problem:
These will fail to play correctly.
animate(src,pixel_x=pixel_x+ox*0.25,pixel_y=16,alpha=255,time=2.5)
animate(pixel_x=pixel_x+ox*0.5,pixel_y=32,alpha=192,time=2.5)
animate(pixel_x=pixel_x+ox,pixel_y=48,alpha=128,time=2.5)
animate(pixel_x=pixel_x+ox*2,pixel_y=64,alpha=0,time=2.5)
animate(src,pixel_x=pixel_x+ox*0.25,pixel_y=16,time=2.5)
animate(pixel_x=pixel_x+ox*0.5,pixel_y=32,alpha=192,time=2.5)
animate(pixel_x=pixel_x+ox,pixel_y=48,alpha=128,time=2.5)
animate(pixel_x=pixel_x+ox*2,pixel_y=64,alpha=0,time=2.5)
These will succeed:
animate(src,pixel_x=pixel_x+ox*0.25,pixel_y=16,alpha=254,time=2.5)
animate(pixel_x=pixel_x+ox*0.5,pixel_y=32,alpha=192,time=2.5)
animate(pixel_x=pixel_x+ox,pixel_y=48,alpha=128,time=2.5)
animate(pixel_x=pixel_x+ox*2,pixel_y=64,alpha=0,time=2.5)
animate(src,pixel_x=pixel_x+ox*0.25,pixel_y=16,time=2.5)
animate(pixel_x=pixel_x+ox*0.5,pixel_y=32,alpha=192,time=2.5)
animate(pixel_x=pixel_x+ox,pixel_y=48,alpha=128,time=2.5)
animate(pixel_x=pixel_x+ox*2,pixel_y=64,alpha=0,time=2.5)
animate(alpha=255,time=0)
alpha = 254
animate(src,pixel_x=pixel_x+ox*0.25,pixel_y=16,alpha=255,time=2.5)
animate(pixel_x=pixel_x+ox*0.5,pixel_y=32,alpha=192,time=2.5)
animate(pixel_x=pixel_x+ox,pixel_y=48,alpha=128,time=2.5)
animate(pixel_x=pixel_x+ox*2,pixel_y=64,alpha=0,time=2.5)
So, apparently an animate() step fails if the value of alpha in that step is equal to the current alpha of the object.
This bug makes smooth fades impossible without using ugly workarounds.