diff --git a/CHANGES.rst b/CHANGES.rst
index b1bdcfd0..ce959203 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,7 +1,7 @@
Changes
=======
-1.4.1 -- 2021-11-dd
+1.4.1 -- 2021-11-25
-------------------
* Fixed Python type hints
* XPM serializer accepts ``None`` (transparent) for dark modules
diff --git a/docs/_static/chart_create_1m.svg b/docs/_static/chart_create_1m.svg
index a9ea544a..4812dc50 100644
--- a/docs/_static/chart_create_1m.svg
+++ b/docs/_static/chart_create_1m.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/_static/chart_create_30h.svg b/docs/_static/chart_create_30h.svg
index 49a67dd9..a4e11113 100644
--- a/docs/_static/chart_create_30h.svg
+++ b/docs/_static/chart_create_30h.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/_static/chart_create_7q.svg b/docs/_static/chart_create_7q.svg
index 74742fb2..e06abd11 100644
--- a/docs/_static/chart_create_7q.svg
+++ b/docs/_static/chart_create_7q.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/_static/chart_png.svg b/docs/_static/chart_png.svg
index fab84cff..5cbae2ba 100644
--- a/docs/_static/chart_png.svg
+++ b/docs/_static/chart_png.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/_static/chart_svg.svg b/docs/_static/chart_svg.svg
index 2e80ee31..80c80e0f 100644
--- a/docs/_static/chart_svg.svg
+++ b/docs/_static/chart_svg.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/sandbox/out/results.csv b/sandbox/out/results.csv
index 3c82204a..c4ab6271 100644
--- a/sandbox/out/results.csv
+++ b/sandbox/out/results.csv
@@ -1,19 +1,19 @@
-PyQRCode create 1-M,6.01
-qrcodegen create 1-M,4.15
-qrcode create 1-M,2.16
-Segno create 1-M,1.51
-PyQRCode create 7-Q,27.27
-qrcodegen create 7-Q,18.38
-qrcode create 7-Q,10.92
-Segno create 7-Q,7.43
-PyQRCode create 30-H,256.13
-qrcodegen create 30-H,170.94
-qrcode create 30-H,107.78
-Segno create 30-H,71.44
-PyQRCode SVG,6.14
-qrcode SVG path,2.83
-qrcode SVG rects,3.57
-Segno SVG,1.77
-PyQRCode PNG 1-M,11.48
-qrcode PNG 1-M,2.86
-Segno PNG 1-M,2.70
+PyQRCode create 1-M,6.00
+qrcodegen create 1-M,4.17
+qrcode create 1-M,2.18
+Segno create 1-M,1.52
+PyQRCode create 7-Q,27.62
+qrcodegen create 7-Q,18.46
+qrcode create 7-Q,11.09
+Segno create 7-Q,7.42
+PyQRCode create 30-H,255.45
+qrcodegen create 30-H,172.41
+qrcode create 30-H,108.80
+Segno create 30-H,71.84
+PyQRCode SVG,6.16
+qrcode SVG path,2.85
+qrcode SVG rects,3.59
+Segno SVG,1.78
+PyQRCode PNG 1-M,11.57
+qrcode PNG 1-M,2.89
+Segno PNG 1-M,2.71
diff --git a/segno/__init__.py b/segno/__init__.py
index 36bacad5..829562b7 100644
--- a/segno/__init__.py
+++ b/segno/__init__.py
@@ -21,7 +21,7 @@
except NameError: # pragma: no cover
str_type = str
-__version__ = '1.4.1.dev'
+__version__ = '1.4.1'
__all__ = ('make', 'make_qr', 'make_micro', 'make_sequence', 'QRCode',
'QRCodeSequence', 'DataOverflowError')