Simple Montage from Leica SP8 plate scan

Hi,
I am trying to make a script where I open a “.lif” file to extract the images from plate scan (xyz, no t, 4 channels). I want to make a Z project, select only 2 channels, then make a montage with the same dimensions as the plate in terms of rows and columns.

In IJM, it is pretty straightforward and this works quite ok:

    filename = folderPath + File.separator + "2020-01-20 Confocal 5x.lif";

    num_cols=2;
    num_rows=2;

    concatenate_string="";

        for (i = 1; i <= num_rows * num_cols; i++) {
			run("Bio-Formats",  "open=["+filename+"] color_mode=Composite rois_import=[ROI manager] view=Hyperstack stack_order=XYCZT use_virtual_stack series_"+i);

                rename("series" + i);
                Stack.setActiveChannels("0110");

				run("Z Project...", "projection=[Standard Deviation]");

				concatenate_string=concatenate_string+"image"+i+"=[STD_series"+i+"] ";
        }

        run("Concatenate...", "open "+concatenate_string);
        run("Make Montage...", "columns="+num_cols+" rows="+num_rows+" scale=0.50");
        Stack.setActiveChannels("0110");

Yet, for some reason, the Java equivalent I am trying to write does not work properly: the Montage returns the 4 different channels of the first series, instead of the montage of the 4 composite projections of each series.
Is that a bug from MakeMontage?
I have also tried using ImageStack instead of concatenating (and even converting the hyperstack) and making the montage, but I also got the wrong outcome (although different: the 1st channel of each series were “montaged”, instead of the composite).

Here is the Java:

String filename = folderPath + File.separator + "2020-01-20 Confocal 5x.lif";

        // ImageStack resultStack = new ImageStack();
        ImagePlus resultImage = new ImagePlus();

        num_cols = 2;
        num_rows = 2;

//        IntStream.rangeClosed(1, num_rows * num_cols)
//                .parallel()
//                .forEachOrdered(i -> {
//

        for (int i = 1; i <= num_rows * num_cols; i++) {

            try {
                ImporterOptions options = new ImporterOptions();
                options.setId(filename);
                options.setAutoscale(false);
                options.setColorMode(ImporterOptions.COLOR_MODE_COMPOSITE);
                options.setSeriesOn(i, true);

                ImagePlus[] imps = BF.openImagePlus(options);

                ImagePlus img = imps[0].duplicate();

                img.setTitle("series" + i);
                img.setActiveChannels("0110");

                ImagePlus projection = ZProjector.run(img, "sd");
                projection.setTitle("projection" + i);
                // IJ.run(projection, "Enhance Contrast", "saturated=0.35");
                projection.show();

                if (i == 1) {
                    resultImage = projection.duplicate();
                } else {
                    resultImage = Concatenator.run(resultImage.duplicate(), projection.duplicate());
                }

                //resultStack.addSlice("series_" + i, projection.getProcessor());
                //IJ.saveAs(projection, "jpeg", filename + "-" + i + "-" + "test.jpg");

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //);


        resultImage.setTitle("resultImage");
        resultImage.show();

        MontageMaker montage = new MontageMaker();
        ImagePlus result2 = montage.makeMontage2(resultImage, num_cols, num_rows, 0.5, 1, num_cols * num_rows, 1, 0, false);
        result2.setTitle("result2");
        result2.show();