Thanks for the feedback!
No, the operation isn't simply looking for alpha values of 255, but it isn't much more complex than that. Sorry for the simplistic explanation.
It takes the source pixel, converts to black and scales the alpha based on the configured shadow alpha. So if your configured alpha is 115, a pixel with alpha of 255 will get scaled to 115, a pixel with an alpha of 128 will get scaled to 58. Obviously 0 goes to 0.
I assume that you are implying that multiple src pixels get mapped to one destination pixel in the shadow in which case you would want to blend the source pixels to calculate the destination pixels value. In which case, I agree... I haven't gotten there yet. However, I might be able to accomplish the same thing by blurring the image before calculating the shadow, rather than blurring the shadow after the fact. I'm not sure...
Also, if it wasn't apparent from the original post, the current plugin translates the source layer into a shadow layer. The source layer is not preserved. The result of the operation is a mostly transparent layer that can be overlayed on other images to appear to give it depth. This is how the google maps API works.
BTW, I'm not super familiar with the entire Paint.NET API at this point, but by "UserPixelOps.Normal.ApplyStatic()" did you mean "UserBlendOps.NormalBlendOp.ApplyStatic()"?