static ImageSurface showImageWithGrayToBlackSlider(S name, final BufferedImage img) { final ImageSurface is = showImage(name, img); final SimpleLiveValue lv = floatLiveValue(); Runnable update = r { float darkening = min(lv!, 0.99f); float factor = 1/(1-darkening); float offset = (-darkening*255)*factor; //print("factor=" + factor + ", offset=" + offset); is.setImage(rgbContrastAndBrightness(factor, offset, img)); }; lv.onChange(update); addToWindowAndPack(is, withLabel("Darkening factor:", jLiveValueSliderZeroToOne(lv))); ret is; }