diff --git a/metis_vignetting.pro b/metis_vignetting.pro
index 1edffdd1d75e812ef6b06aa9183afa2dfe385e1c..ee1e7f8e08b4dcef7688b7b6ee3543a885e1ef9a 100644
--- a/metis_vignetting.pro
+++ b/metis_vignetting.pro
@@ -1,4 +1,4 @@
-function metis_vignetting, data, header, cal_pack, history = history
+function metis_vignetting, data, header, cal_pack, error = error, quality_matrix = quality_matrix, history = history
 
 	journal, 'Vignetting correction:'
 
@@ -6,6 +6,7 @@ function metis_vignetting, data, header, cal_pack, history = history
 	if header.filter.contains('UV', /fold) then vig_info = cal_pack.uv_channel.vignetting
 
 	vig_image = readfits(cal_pack.path + vig_info.file_name, /silent)
+	vig_error = readfits(cal_pack.path + vig_info.error, /silent)
 	vig_image = median(vig_image, 5)
 	vig_file = vig_info.file_name
 
@@ -32,18 +33,33 @@ function metis_vignetting, data, header, cal_pack, history = history
 		vig_image = rotate(vig_image, 3)
 		vig_image = reverse(vig_image, 1)
 
+		; WARN - error for the shift of the uv vignetting function must be included
+
+		vig_error = rotate(vig_error, 1)
+		vig_error = shift(vig_error, dx, dy)
+		vig_error[2047 - abs(dx) : 2047, *] = 0.
+		vig_error[*, 0 : abs(dy) - 1] = 0.
+		vig_error = rotate(vig_error, 3)
+		vig_error = reverse(vig_error, 1)
+
 		journal, '  UV shift applied = [' + string(dx, format = '(F0.1)') + ', ' + string(dy, format = '(F0.1)') + '] pixel'
 	endif
 
+	; WARN - error for binning must be checked
+
+	vig_nobin = vig_image
 	vig_image = rebin(vig_image, header.naxis1, header.naxis2)
-	vig_image = (vig_image > 0.) < 1.
+	vig_error = vig_image * sqrt(rebin((vig_error/vig_nobin)^2, header.naxis1, header.naxis2)/header.nbin)
 
+	vig_image = (vig_image > 0.) < 1.
 	mask = where(vig_image eq 0.)
 	vig_image[mask] = 1.
 
-	data = data / vig_image
+	data = data/vig_image
 	data[mask] = 0.
 
+	if isa(error) then error += (vig_error/vig_image)^2
+
 	if ~ isa(history) then history = !null
 	history = [history, 'Vignetting correction: ', '  ' + vig_file + ' shifted by [' + string(dx, format = '(F0.1)') + ', ' + string(dy, format = '(F0.1)') + '] pixel']