import javafx.application.Application; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.Label; import javafx.scene.effect.BoxBlur; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.VBox; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.scene.transform.Scale; import javafx.stage.Stage; public class BlurSideEffect extends Application { @Override public void start(Stage primaryStage) { Text text = new Text("Here Is Some Sample Text. Here Is Some Sample Text\nHere Is Some Sample Text. Here Is Some Sample Text"); text.setFont(Font.font("Courier New", 72)); Image unblurredTextImage = text.snapshot(null, null); text.setEffect(new BoxBlur(5, 5, 1)); Image preBlurredTextImage = text.snapshot(null, null); ImageView scaledOnlyImageView = new ImageView(preBlurredTextImage); scaledOnlyImageView.getTransforms().add(new Scale(.2, .2)); ImageView scaledAndBlurredImageView = new ImageView(unblurredTextImage); scaledAndBlurredImageView.setEffect(new BoxBlur(5, 5, 1)); scaledAndBlurredImageView.getTransforms().add(new Scale(.2, .2)); VBox root = new VBox(); root.getChildren().addAll(new Label("What we should see:"), new Group(scaledOnlyImageView), new Label("What we actually see:"), new Group(scaledAndBlurredImageView)); Scene scene = new Scene(root); primaryStage.setTitle("Transform and Effect order bug demo"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { Application.launch(args); } }