You can get the old ImageCompose behavior by using Overlay instead:
Overlay[{i1, i2}] Edit:
As pointed out by the comment by ybeltukovybeltukov the Head of an Overlay is "Overlay" and therefore doesn't match the Head of ImageCompose, which is "Image". I didn't realize this, because exporting to a .png file did handle the transformation.
One can use e.g.
ImportString@ExportString[Overlay[{i1, i2}], "PNG"] to get an object with Head "Image", and that therefore can be used the same way as an object created with ImageCompose inside the notebook.
