@davidflanagan: Regarding your first comment: This code path only gets called when we don't have a preview image yet. In other words this will create a preview image (with no modification applied) at the initialization of the ImageEditor. 
So computing the histogram values in parallel makes sense here. You are right, however, to use the the canvas in the createThumbanilFromSource() makes total sense.