.NET - Bitmap.Save ignoriert Bitmap.SetResolution unter Windows 7

Ich schreibe eine .NET 4-Anwendung, die Bilder zum Drucken importiert und speichert. Es ist wichtig, dass die Auflösung der gespeicherten Bilder (DPI, nicht Pixelabmessungen) auf den von uns angegebenen Wert eingestellt wird, damit sie korrekt gedruckt werden.

Einige der Bilder, die wir importieren, werden ohne den Auflösungswert geliefert (fehlerhaftes EXIF, als sie generiert wurden), daher müssen wir dies korrigieren, bevor wir sie schreiben. Wir verwenden dafür Bitmap.SetResolution. Es funktioniert unter XP und Windows 8 einwandfrei, aber wenn wir die Bilder unter Windows 7 schreiben (Bitmap.Save), werden sie immer mit den Metainformationen der ursprünglichen Auflösung geschrieben, wobei SetResolution ignoriert wird.

Hier ist ein Test, den wir gemacht haben, funktioniert auf XP und 8, nicht auf 7.

string originalFile = @"D:\temp\img\original_img.jpg";
string newFile = @"D:\temp\img\new_img.jpg";

Bitmap bitmap = (Bitmap)Image.FromFile(originalFile);
bitmap.SetResolution(200, 200);
bitmap.Save(newFile, ImageFormat.Jpeg);

Image image = Image.FromFile(newFile);
int dpiX = (int)Math.Round(image.HorizontalResolution, MidpointRounding.ToEven);
int dpiY = (int)Math.Round(image.VerticalResolution, MidpointRounding.ToEven);
Console.WriteLine("DPI is {0} x {1}", dpiX, dpiY);

Vor dem Speichern zeigt Debug immer die richtige Auflösung, die von SetResolution zugewiesen wurde. Das gespeicherte Bild ist der Ort, an dem das Problem liegt.

Dies ist wahrscheinlich, was hier berichtet wurde:http://social.msdn.microsoft.com/Forums/vstudio/en-US/62368caa-05f4-4798-9c59-5d82f881a97c/systemdrawingbitmapsetresolution-is-completely-broken-on-windows-7?forum=netfxbcl

Aber das Problem dort scheint ungelöst zu bleiben. Gibt es wirklich keine Möglichkeit, es einfach zum Laufen zu bringen? Muss ich dafür zusätzliche Bibliotheken verwenden?