JpegBitmapEncoder pozostawia szare pasmo na końcu pliku?

Pracuję z komponentami do obrazowania WPF, próbując wykonać prostą manipulację obrazem. Z grubsza śledzę artykuł MSJak kodować i dekodować obraz JPEG.

Mój kod jest prosty:

BitmapImage bi = new BitmapImage();

bi.BeginInit();
bi.UriSource = new Uri("D:\\Temp\\StackOverflowCapture.png");
//bi.DecodePixelWidth = 1024;
//bi.DecodePixelHeight = 768;
bi.EndInit();

var jpg                  = new JpegBitmapEncoder();
    jpg.QualityLevel     = 90;
    //jpg.FlipHorizontal = false;
    //jpg.FlipVertical   = false;
    jpg.Frames.Add(BitmapFrame.Create(bi));

var fs = new FileStream("D:\\Temp\\StackOverflow_Result.jpg", FileMode.Create);

jpg.Save( fs );
jpg = null;

Fragment kodu tworzy nieparzysty artefakt, w którym kilka ostatnich „linii” jest bryłą koloru szarego. To prawie tak, jakby koder po prostu wyczerpał piksele do zapisu. Ilość szarości zmienia się o współczynnik 2x lub 3x w zależności od obrazu, którego używam jako wejścia (różne rozdzielczości, jpeg, png) lub opcji, które włączam (wymuszając rozdzielczość w dekodowaniu). Efekt netto jest taki sam, jak widać na poniższych obrazkach.

Mój obraz źródłowy to:

Obraz wyjściowy (zwróć uwagę na szary pasek na dole):

Co tu się dzieje? Jak uzyskać czystą konwersję?

questionAnswers(1)

yourAnswerToTheQuestion