diff --git a/Lib/turtle.py b/Lib/turtle.py
index d6eb3cb..55da4e9 100644
--- a/Lib/turtle.py
+++ b/Lib/turtle.py
@@ -38,7 +38,7 @@
 ----- turtle.py
 
 This module is an extended reimplementation of turtle.py from the
-Python standard distribution up to Python 2.5. (See: http:\\www.python.org)
+Python standard distribution up to Python 2.5. (See: http://www.python.org)
 
 It tries to keep the merits of turtle.py and to be (nearly) 100%
 compatible with it. This means in the first place to enable the
@@ -54,7 +54,7 @@
 
 - Different turtle shapes, gif-images as turtle shapes, user defined
   and user controllable turtle shapes, among them compound
-  (multicolored) shapes. Turtle shapes can be stgretched and tilted, which
+  (multicolored) shapes. Turtle shapes can be stretched and tilted, which
   makes turtles very versatile geometrical objects.
 
 - Fine control over turtle movement and screen updates via delay(),
@@ -64,7 +64,7 @@
   following the early Logo traditions. This reduces the boring work of
   typing long sequences of commands, which often occur in a natural way
   when kids try to program fancy pictures on their first encounter with
-  turtle graphcis.
+  turtle graphics.
 
 - Turtles now have an undo()-method with configurable undo-buffer.
 
@@ -91,12 +91,12 @@
 
 - If configured appropriately the module reads in docstrings from a docstring
   dictionary in some different language, supplied separately  and replaces
-  the english ones by those read in. There is a utility function
-  write_docstringdict() to write a dictionary with the original (english)
+  the English ones by those read in. There is a utility function
+  write_docstringdict() to write a dictionary with the original (English)
   docstrings to disc, so it can serve as a template for translations.
 
 Behind the scenes there are some features included with possible
-extensionsin in mind. These will be commented and documented elsewhere.
+extensions in in mind. These will be commented and documented elsewhere.
 
 """
 
@@ -301,7 +301,7 @@
 
 ##############################################################################
 ### From here up to line    : Tkinter - Interface for turtle.py            ###
-### May be replaced by an interface to some different graphcis-toolkit     ###
+### May be replaced by an interface to some different graphics toolkit     ###
 ##############################################################################
 
 ## helper functions for Scrolled Canvas, to forward Canvas-methods
@@ -380,7 +380,7 @@
         self._rootwindow.bind('<Configure>', self.onResize)
 
     def reset(self, canvwidth=None, canvheight=None, bg = None):
-        """Ajust canvas and scrollbars according to given canvas size."""
+        """Adjust canvas and scrollbars according to given canvas size."""
         if canvwidth:
             self.canvwidth = canvwidth
         if canvheight:
@@ -776,7 +776,7 @@
             self.cv.coords(item, *newcoordlist)
 
     def _resize(self, canvwidth=None, canvheight=None, bg=None):
-        """Resize the canvas, the turtles are drawing on. Does
+        """Resize the canvas the turtles are drawing on. Does
         not alter the drawing window.
         """
         # needs amendment
@@ -951,7 +951,7 @@
     def clear(self):
         """Delete all drawings and all turtles from the TurtleScreen.
 
-        Reset empty TurtleScreen to it's initial state: white background,
+        Reset empty TurtleScreen to its initial state: white background,
         no backgroundimage, no eventbindings and tracing on.
 
         No argument.
@@ -1317,7 +1317,7 @@
         fun -- a function with no arguments
         key -- a string: key (e.g. "a") or key-symbol (e.g. "space")
 
-        In order ro be able to register key-events, TurtleScreen
+        In order to be able to register key-events, TurtleScreen
         must have focus. (See method listen.)
 
         Example (for a TurtleScreen instance named screen
@@ -1399,7 +1399,7 @@
         self._bgpicname = picname
 
     def screensize(self, canvwidth=None, canvheight=None, bg=None):
-        """Resize the canvas, the turtles are drawing on.
+        """Resize the canvas the turtles are drawing on.
 
         Optional arguments:
         canvwidth -- positive integer, new width of canvas in pixels
@@ -1692,8 +1692,8 @@
 
         No arguments.
 
-        Move turtle to the origin - coordinates (0,0) and set it's
-        heading to it's start-orientation (which depends on mode).
+        Move turtle to the origin - coordinates (0,0) and set its
+        heading to its start-orientation (which depends on mode).
 
         Example (for a Turtle instance named turtle):
         >>> turtle.home()
@@ -2265,7 +2265,7 @@
            "outline"    :   positive number
            "tilt"       :   number
 
-        This dicionary can be used as argument for a subsequent
+        This dictionary can be used as argument for a subsequent
         pen()-call to restore the former pen-state. Moreover one
         or more of these attributes can be provided as keyword-arguments.
         This can be used to set several pen attributes in one statement.
@@ -2413,7 +2413,7 @@
 class RawTurtle(TPen, TNavigator):
     """Animation part of the RawTurtle.
     Puts RawTurtle upon a TurtleScreen and provides tools for
-    it's animation.
+    its animation.
     """
     screens = []
 
@@ -2458,7 +2458,7 @@
         self._update()
 
     def reset(self):
-        """Delete the turtle's drawings and restore it's default values.
+        """Delete the turtle's drawings and restore its default values.
 
         No argument.
 ,
@@ -2748,7 +2748,7 @@
 
         Return the current tilt-angle, i. e. the angle between the
         orientation of the turtleshape and the heading of the turtle
-        (it's direction of movement).
+        (its direction of movement).
 
         Examples (for a Turtle instance named turtle):
         >>> turtle.shape("circle")
@@ -2793,7 +2793,7 @@
 
     def _drawturtle(self):
         """Manages the correct rendering of the turtle with respect to
-        it's shape, resizemode, strech and tilt etc."""
+        its shape, resizemode, strech and tilt etc."""
         screen = self.screen
         shape = screen._shapes[self.turtle.shapeIndex]
         ttype = shape._type
@@ -2847,7 +2847,7 @@
 ##############################  stamp stuff  ###############################
 
     def stamp(self):
-        """Stamp a copy of the turtleshape onto the canvas and return it's id.
+        """Stamp a copy of the turtleshape onto the canvas and return its id.
 
         No argument.
 
