diff --git a/pd/src/pd.tk b/pd/src/pd.tk
index eefabb320dc353bd072f13cfad6a7ad5113ec5ae..ffd1a337034a48c12627d762d445bbf618d10db9 100644
--- a/pd/src/pd.tk
+++ b/pd/src/pd.tk
@@ -3453,19 +3453,6 @@ proc pdtk_canvas_getscroll {name} {
 
 	foreach item [$name find withtag {(!noscroll)}] {
 	    switch -exact [$name type $item] {
-			"arc" -
-			"line" -
-			"oval" -
-			"polygon" -
-			"rectangle" {
-				set coords [$name coords $item]
-				foreach {x y} $coords {
-					if { $x < $x1 } {set x1 $x}
-					if { $x > $x2 } {set x2 $x}
-					if { $y < $y1 } {set y1 $y}
-					if { $y > $y2 } {set y2 $y}
-				}
-			}
 			"text" {
 				set size [$name bbox $item]
 				if { [$name itemcget $item -text] != ""} {
@@ -3479,6 +3466,37 @@ proc pdtk_canvas_getscroll {name} {
 					}
 				}
 			}
+			"image" {
+				set imgtags [$name gettags $item]
+				set imgtag [lindex $imgtags 0]
+				set anchor [$name itemcget $imgtag -anchor]
+				set img [$name itemcget $imgtag -image]
+				set imgh [image height $img]
+				set imgw [image width $img]
+				set center [$name coords $item]
+				set coords [list \
+					[expr [lindex $center 0] - [expr $imgw/2]] \
+					[expr [lindex $center 1] - [expr $imgh/2]] \
+					[expr [lindex $center 0] + [expr $imgw/2]] \
+					[expr [lindex $center 1] + [expr $imgh/2]] \
+				]
+				foreach {x y} $coords {
+					if { $x < $x1 } {set x1 $x}
+					if { $x > $x2 } {set x2 $x}
+					if { $y < $y1 } {set y1 $y}
+					if { $y > $y2 } {set y2 $y}
+				}
+			}
+			default {
+				set coords [$name coords $item]
+				foreach {x y} $coords {
+					if { $x < $x1 } {set x1 $x}
+					if { $x > $x2 } {set x2 $x}
+					if { $y < $y1 } {set y1 $y}
+					if { $y > $y2 } {set y2 $y}
+				}
+			}
+
 	    }
 	}