rasterSpaceEnvelope = CRS.transform(mt, targetEnvelope).toRectangle2D().getBounds();
GridEnvelope2D gridRange = new GridEnvelope2D(rasterSpaceEnvelope);
GridGeometry2D gridGeometry = new GridGeometry2D(gridRange, targetEnvelope);
// mosaic
final ParameterValueGroup param = MOSAIC_PARAMS.clone();
param.parameter("sources").setValue(coverages);
param.parameter("geometry").setValue(gridGeometry);
return (GridCoverage2D) MOSAIC_FACTORY.doOperation(param, hints);
} catch (Exception e) {
throw new RuntimeException("Failed to mosaic the input coverages", e);
}