diff --git a/tests/visual_tests/grids/point-symbolizer-overlap-placement-expr-500-500-1.0-grid-reference.json b/tests/visual_tests/grids/point-symbolizer-overlap-placement-expr-500-500-1.0-grid-reference.json
new file mode 100644
index 000000000..f0e53b1ca
--- /dev/null
+++ b/tests/visual_tests/grids/point-symbolizer-overlap-placement-expr-500-500-1.0-grid-reference.json
@@ -0,0 +1,157 @@
+{
+ "keys": [
+ "",
+ "1",
+ "2",
+ "3",
+ "5",
+ "7",
+ "8",
+ "9",
+ "10",
+ "11",
+ "13",
+ "15",
+ "16",
+ "17",
+ "18",
+ "19",
+ "21",
+ "22",
+ "23",
+ "25",
+ "26",
+ "27",
+ "29",
+ "30",
+ "31"
+ ],
+ "data": {},
+ "grid": [
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " !!!### $$$ %%% &&''' ",
+ " !!!##### $$$$$ %%%%% &&''''' ",
+ " !!!##### $$$$$ %%%%% &&''''' ",
+ " !!!##### $$$$$ %%%%% &&''''' ",
+ " !!!### $$$ %%% &&'''' ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " (()))) **** ++++ ,,,---- ",
+ " ((())))) ***** +++++ ,,----- ",
+ " ((())))) ***** +++++ ,,----- ",
+ " (())))) ***** +++++ ,,,---- ",
+ " (())) *** +++ ,,,-- ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " .../// 000 11222 333 ",
+ " ...///// 00000 1122222 33333 ",
+ " ...///// 00000 1122222 33333 ",
+ " ...///// 00000 1122222 33333 ",
+ " .../// 000 112222 333 ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " 445555 6666 7778888 9999 ",
+ " 44455555 66666 7788888 99999 ",
+ " 44455555 66666 7788888 99999 ",
+ " 4455555 66666 7778888 99999 ",
+ " 44555 666 77788 999 ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ]
+}
\ No newline at end of file
diff --git a/tests/visual_tests/grids/text-allow-overlap-expr-500-500-1.0-grid-reference.json b/tests/visual_tests/grids/text-allow-overlap-expr-500-500-1.0-grid-reference.json
new file mode 100644
index 000000000..3615097a4
--- /dev/null
+++ b/tests/visual_tests/grids/text-allow-overlap-expr-500-500-1.0-grid-reference.json
@@ -0,0 +1,145 @@
+{
+ "keys": [
+ "",
+ "2",
+ "1",
+ "3",
+ "5",
+ "8",
+ "7",
+ "10",
+ "9",
+ "11",
+ "13",
+ "16",
+ "15"
+ ],
+ "data": {},
+ "grid": [
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " !#!!#!!! $ $$ $$ % %%%%% &&&'&&&' ",
+ " #! #! ! $$ $$$ %% %%% '& &''& ",
+ " ! !# # $ $$ $ % %% % && &'& ' ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ()(()((( * ** ** + + ++ , ,-,,,- ",
+ " ( (( ** *** ++ +++ ,, ,--, ",
+ " )))) ( ** ** ++ ++ ,, ,-, ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " "
+ ]
+}
\ No newline at end of file
diff --git a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-agg-reference.png b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-agg-reference.png
new file mode 100644
index 000000000..ff046ca79
Binary files /dev/null and b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-agg-reference.png differ
diff --git a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-cairo-reference.png b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-cairo-reference.png
new file mode 100644
index 000000000..124833e46
Binary files /dev/null and b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-1.0-cairo-reference.png differ
diff --git a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-agg-reference.png b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-agg-reference.png
new file mode 100644
index 000000000..ad8ebe815
Binary files /dev/null and b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-agg-reference.png differ
diff --git a/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-cairo-reference.png b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-cairo-reference.png
new file mode 100644
index 000000000..682833330
Binary files /dev/null and b/tests/visual_tests/images/point-symbolizer-overlap-placement-expr-500-500-2.0-cairo-reference.png differ
diff --git a/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-agg-reference.png b/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-agg-reference.png
new file mode 100644
index 000000000..983738828
Binary files /dev/null and b/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-agg-reference.png differ
diff --git a/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-cairo-reference.png b/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-cairo-reference.png
new file mode 100644
index 000000000..e04ebca91
Binary files /dev/null and b/tests/visual_tests/images/text-allow-overlap-expr-500-500-1.0-cairo-reference.png differ
diff --git a/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-agg-reference.png b/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-agg-reference.png
new file mode 100644
index 000000000..bb01c5bfb
Binary files /dev/null and b/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-agg-reference.png differ
diff --git a/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-cairo-reference.png b/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-cairo-reference.png
new file mode 100644
index 000000000..5b69fdfd2
Binary files /dev/null and b/tests/visual_tests/images/text-allow-overlap-expr-500-500-2.0-cairo-reference.png differ
diff --git a/tests/visual_tests/styles/point-symbolizer-overlap-placement-expr.xml b/tests/visual_tests/styles/point-symbolizer-overlap-placement-expr.xml
new file mode 100644
index 000000000..e39d56ea2
--- /dev/null
+++ b/tests/visual_tests/styles/point-symbolizer-overlap-placement-expr.xml
@@ -0,0 +1,75 @@
+
+
+
diff --git a/tests/visual_tests/styles/text-allow-overlap-expr.xml b/tests/visual_tests/styles/text-allow-overlap-expr.xml
new file mode 100644
index 000000000..ee85083da
--- /dev/null
+++ b/tests/visual_tests/styles/text-allow-overlap-expr.xml
@@ -0,0 +1,48 @@
+
+
+
diff --git a/tests/visual_tests/test.py b/tests/visual_tests/test.py
index da095b1b8..6759d395d 100755
--- a/tests/visual_tests/test.py
+++ b/tests/visual_tests/test.py
@@ -247,6 +247,7 @@ files = {
'line-symbolizer-expressions-all':{'sizes':[(256,256)]},
'point-symbolizer-expressions':{'sizes':[(256,256)]},
'point-symbolizer-expressions-all':{'sizes':[(256,256)]},
+ 'point-symbolizer-overlap-placement-expr': {'bbox':large_text_box, 'sizes': [(500, 500)]},
'marker-symbolizer-expressions-all':{'sizes':[(256,256)]},
'polygon-symbolizer-expressions':{'sizes':[(256,256)]},
'polygon-symbolizer-expressions-all':{'sizes':[(256,256)]},