This was a pain…. There are a couple of articles that got me really close, but this one was the finisher!
The trick was when I was converting the C# to vb.net from this article
It mentions that you need to cast the bytes to ints
This is the salient line
pixelTotal = CInt(sourceBuffer(sourceIndex + 1)) + CInt(sourceBuffer(sourceIndex + 2)) + CInt(sourceBuffer(sourceIndex + 3)) Here is more info http://www.bobpowell.net/onebit.htm Also, note that if you want to retain the resolution you need to In the ConvertToBitonal routine add the line marked below: // Create destination bitmap Bitmap destination = new Bitmap(source.Width, source.Height, PixelFormat.Format1bppIndexed); -----> destination.SetResolution(source.HorizontalResolution, source.VerticalResolution);