I've made some further testing, and discovered it comes from the format. With two similar picture, 256 colors,one is png the other is gif Bitmap bitmap = new Bitmap("Myfile.png"); -> bitmap.PixelFormat = PixelFormat.Format32bppArgb Bitmap bitmap = new Bitmap("Myfile.gif"); -> bitmap.PixelFormat = PixelFormat.Format8bppIndexed Conclusion : The png codec is "buggy" and if you use the standard constructor, the bitmap ignore the file attributes and is always 32bppp. The gif coded works OK, and the bitmap keeps the file attributes. With this, I've reduced my application memory usage by 60%