It might be the classic "large native allocated bitmap is wrapped by a small managed bitmap wrapper and so the VM garbage collector is not collecting the wrapper because it doesn't think it's out of memory yet while the native heap is exhausted" problem. You could try explicitly freeing up the bitmaps and see if that helps.
My PageTurnView library has a RecycleBitmap function you could use to try freeing a bitmap when you know you don't need it or it's trivial to do it with my Reflection library.
Dim Obj1 As Reflector
Obj1.Target = bmp ' bmp is the unwanted Bitmap
Obj1.RunMethod("recycle")
You can get the bitmap from a canvas but note that if the canvas is initialised on a view you will need to give that view another drawable or initialize a canvas on it before it is drawn again or you will get a "Canvas: trying to use a recycled bitmap " exception and your app will force close.
Obj1.Target = canv
Obj1.Target = Obj1.GetField("bw")
Obj1.Target = Obj1.RunMethod("getObject")
Obj1.RunMethod("recycle")