As mentioned in my previous post, a Content Processor that converts textures into premultiplied alpha format:
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Content.Pipeline; using Microsoft.Xna.Framework.Content.Pipeline.Graphics; using Microsoft.Xna.Framework.Content.Pipeline.Processors; namespace PremultipliedAlpha { [ContentProcessor] class PremultipliedAlphaTextureProcessor : TextureProcessor { public override TextureContent Process(TextureContent input, ContentProcessorContext context) { input.ConvertBitmapType(typeof(PixelBitmapContent<Color>)); foreach (MipmapChain mipChain in input.Faces) { foreach (PixelBitmapContent<Color> bitmap in mipChain) { for (int y = 0; y < bitmap.Height; y++) { for (int x = 0; x < bitmap.Width; x++) { Color c = bitmap.GetPixel(x, y); c.R = (byte)(c.R * c.A / 255); c.G = (byte)(c.G * c.A / 255); c.B = (byte)(c.B * c.A / 255); bitmap.SetPixel(x, y, c); } } } } return base.Process(input, context); } } }