diff --git a/CHANGELOG.md b/CHANGELOG.md
index d2e95f605040783ade6ab243623912a20f49c495..c6b5e609e55a418b700f1bc5dece899e93f12436 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -9,6 +9,8 @@ that users understand how the changes affect the new version.
 -->
 version 5.1.0-dev
 ---------------------------
++ Update samtools image to version 1.16.
++ Add targetsFile input for samtools View.
 + Mateclever's runtime attribute defaults were changed to:
   + memory: `"250GiB"`
   + timeMinutes: `2880`
diff --git a/samtools.wdl b/samtools.wdl
index 587a53fb048a65f66f7adb482d91c87f3ba563cb..771a99699221e07c1e5471b29fa00926d2e52aa8 100644
--- a/samtools.wdl
+++ b/samtools.wdl
@@ -72,7 +72,7 @@ task DictAndFaidx {
         String javaXmx = "2G"
         String memory = "3GiB"
         Int timeMinutes = 5 + ceil(size(inputFile, "GiB") * 5)
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     String outputFile = basename(inputFile)
@@ -119,7 +119,7 @@ task Faidx {
         String outputDir
 
         String memory = "2GiB"
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     command {
@@ -168,7 +168,7 @@ task Fastq {
         Int threads = 1
         String memory = "1GiB"
         Int timeMinutes = 1 + ceil(size(inputBam) * 2)
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     command {
@@ -232,7 +232,7 @@ task FilterShortReadsBam {
 
         String memory = "1GiB"
         Int timeMinutes = 1 + ceil(size(bamFile, "GiB") * 8)
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     String outputPathBamIndex = sub(outputPathBam, "\.bam$", ".bai")
@@ -278,7 +278,7 @@ task Flagstat {
 
         String memory = "256MiB"  # Only 40.5 MiB used for 150G bam file.
         Int timeMinutes = 1 + ceil(size(inputBam, "G"))
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     command {
@@ -318,7 +318,7 @@ task Index {
 
         String memory = "2GiB"
         Int timeMinutes = 1 + ceil(size(bamFile, "GiB") * 4)
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     # Select_first is needed, otherwise womtool validate fails.
@@ -369,7 +369,7 @@ task Markdup {
         String outputBamPath
 
         Int timeMinutes = 1 + ceil(size(inputBam, "GiB") * 2)
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     command {
@@ -408,7 +408,7 @@ task Merge {
         Int threads = 1
         String memory = "4GiB"
         Int timeMinutes = 1 + ceil(size(bamFiles, "GiB") * 2)
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     String indexPath = sub(outputBamPath, "\.bam$",".bai")
@@ -463,7 +463,7 @@ task Sort {
         Int threads = 1
         Int memoryGb = 1 + threads * memoryPerThreadGb
         Int timeMinutes = 1 + ceil(size(inputBam, "GiB") * 3)
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     # Select first needed as outputPath is optional input (bug in cromwell).
@@ -571,11 +571,12 @@ task View {
         Int? excludeFilter
         Int? excludeSpecificFilter
         Int? MAPQthreshold
+        File? targetFile
 
         Int threads = 1
         String memory = "1GiB"
         Int timeMinutes = 1 + ceil(size(inFile, "GiB") * 5)
-        String dockerImage = "quay.io/biocontainers/samtools:1.11--h6270b1f_0"
+        String dockerImage = "quay.io/biocontainers/samtools:1.16.1--h6899075_1"
     }
 
     String outputIndexPath = basename(outputFileName) + ".bai"
@@ -593,6 +594,7 @@ task View {
         ~{"-G " + excludeSpecificFilter} \
         ~{"-q " + MAPQthreshold} \
         ~{"--threads " + (threads - 1)} \
+        ~{"--target-file " + targetFile} \
         ~{inFile}
         samtools index ~{outputFileName} ~{outputIndexPath}
     }
@@ -619,6 +621,7 @@ task View {
         excludeFilter: {description: "Equivalent to samtools view's `-F` option.", category: "advanced"}
         excludeSpecificFilter: {description: "Equivalent to samtools view's `-G` option.", category: "advanced"}
         MAPQthreshold: {description: "Equivalent to samtools view's `-q` option.", category: "advanced"}
+        targetFile: {description: "A BED file with regions to include", caegory: "advanced"}
         threads: {description: "The number of threads to use.", category: "advanced"}
         memory: {description: "The amount of memory this job will use.", category: "advanced"}
         timeMinutes: {description: "The maximum amount of time the job will run in minutes.", category: "advanced"}