solution thanks @chandrasekhar's suggestions issue was passing in immutable bitmap canvas constructor. solution create copy of when using bitmapfactory.decodefile(); bitmap bmp = bitmapfactory.decodefile(imageurl).copy(bitmap.config.argb_8888, true); so have bitmap using bitmapfactory.decodefile() , works. able create bitmap, need create canvas , things weird. here's flow of happening. capture image, pass functiona sizes it, , saves out , returns file path. ( using phonegap cordova ) i pass url java , use saved image , manipulate in functionb code in question: // url image final jsonobject options = optionsarr.optjsonobject(0); string imageurl = options.optstring("image"); // create image bitmap bitmap bmp = bitmapfactory.decodefile(imageurl); bmp = bitmap.createbitmap(bmp,0,0,655,655); /* works fine until point */ // create image canvas canvas canvas = new canvas(bmp); bitmap 1 = bitmap.createbitmap(bmp); canvas.drawbitmap(one,0,0,null); i rece...