diff --git a/dlls/cabinet/fci.c b/dlls/cabinet/fci.c
index da06cb7..a33f2e3 100644
--- a/dlls/cabinet/fci.c
+++ b/dlls/cabinet/fci.c
@@ -379,7 +379,7 @@
   /* add optional reserved area */
 
   /* This allocation and freeing at each CFData block is a bit */
-  /* inefficent, but it's harder to forget about freeing the buffer :-). */
+  /* inefficient, but it's harder to forget about freeing the buffer :-). */
   /* Reserved areas are used seldom besides that... */
   if (cbReserveCFData!=0) {
     if(!(reserved = (char*)PFCI_ALLOC(hfci, cbReserveCFData))) {
diff --git a/dlls/crypt32/tests/encode.c b/dlls/crypt32/tests/encode.c
index 7616ec5..74595fc 100644
--- a/dlls/crypt32/tests/encode.c
+++ b/dlls/crypt32/tests/encode.c
@@ -2389,7 +2389,7 @@
     BYTE *buf = NULL;
     DWORD bufSize = 0;
 
-    /* Encode a homogenous sequence */
+    /* Encode a homogeneous sequence */
     for (i = 0; i < sizeof(ints) / sizeof(ints[0]); i++)
     {
         blobs[i].cbData = ints[i].encoded[1] + 2;
diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c
index 2699ba9..d92f36b 100644
--- a/dlls/ddraw/tests/d3d.c
+++ b/dlls/ddraw/tests/d3d.c
@@ -1055,7 +1055,7 @@
     }
     for(i = 0; i < sizeof(outH); i++) {
         if(((unsigned char *) outH)[i] != 0xaa) {
-            ok(FALSE, "Homogenous output was generated despite UNCLIPPED flag\n");
+            ok(FALSE, "Homogeneous output was generated despite UNCLIPPED flag\n");
             break;
         }
     }
diff --git a/dlls/ddraw/viewport.c b/dlls/ddraw/viewport.c
index 302555d..deb4146 100644
--- a/dlls/ddraw/viewport.c
+++ b/dlls/ddraw/viewport.c
@@ -328,7 +328,7 @@
  * This function is pretty similar to IDirect3DVertexBuffer7::ProcessVertices,
  * so it's tempting to forward it to there. However, there are some
  * tiny differences. First, the lpOffscreen flag that is reported back,
- * then there is the homogenous vertex that is generated. Also there's a lack
+ * then there is the homogeneous vertex that is generated. Also there's a lack
  * of FVFs, but still a custom stride. Last, the d3d1 - d3d3 viewport has some
  * settings (scale) that d3d7 and wined3d do not have. All in all wrapping to
  * ProcessVertices doesn't pay of in terms of wrapper code needed and code
diff --git a/dlls/gdi32/printdrv.c b/dlls/gdi32/printdrv.c
index 36359ae..5bfabb9 100644
--- a/dlls/gdi32/printdrv.c
+++ b/dlls/gdi32/printdrv.c
@@ -693,7 +693,7 @@
 
 /*
  * The following two function would allow a page to be sent to the printer
- * when it has been processed.  For simplicity they havn't been implemented.
+ * when it has been processed.  For simplicity they haven't been implemented.
  * This means a whole job has to be processed before it is sent to the printer.
  */
 
diff --git a/dlls/kernel32/tests/drive.c b/dlls/kernel32/tests/drive.c
index a8cc165..a94cbdf 100644
--- a/dlls/kernel32/tests/drive.c
+++ b/dlls/kernel32/tests/drive.c
@@ -126,7 +126,7 @@
                     ok( total_clusters <= 65535,
                             "total clusters is %d > 65535\n", total_clusters);
                 else if (pGetDiskFreeSpaceExA) {
-                    /* NT, 2k, XP : GetDiskFreeSpace shoud be accurate */
+                    /* NT, 2k, XP : GetDiskFreeSpace should be accurate */
                     ULARGE_INTEGER totEx, tot, d;
 
                     tot.QuadPart = sectors_per_cluster;
diff --git a/dlls/kernel32/tests/resource.c b/dlls/kernel32/tests/resource.c
index f0c2e3e..3e152e6 100644
--- a/dlls/kernel32/tests/resource.c
+++ b/dlls/kernel32/tests/resource.c
@@ -134,7 +134,7 @@
     CloseHandle( test );
 
     r = EndUpdateResource( res, FALSE );
-    ok( r == FALSE, "EndUpdateResouce failed\n");
+    ok( r == FALSE, "EndUpdateResource failed\n");
 
     res = BeginUpdateResource( filename, FALSE );
     ok( res == NULL, "BeginUpdateResource failed\n");
@@ -149,7 +149,7 @@
     ok( res != NULL, "BeginUpdateResource failed\n");
 
     r = EndUpdateResource( res, FALSE );
-    ok( r, "EndUpdateResouce failed\n");
+    ok( r, "EndUpdateResource failed\n");
 }
 
 static void update_resources_delete( void )
@@ -161,7 +161,7 @@
     ok( res != NULL, "BeginUpdateResource failed\n");
 
     r = EndUpdateResource( res, FALSE );
-    ok( r, "EndUpdateResouce failed\n");
+    ok( r, "EndUpdateResource failed\n");
 }
 
 static void update_resources_version(void)
@@ -178,17 +178,17 @@
                         MAKEINTRESOURCE(0x4567),
                         0xabcd,
                         NULL, 0 );
-    ok( r == FALSE, "UpdateResouce failed\n");
+    ok( r == FALSE, "UpdateResource failed\n");
 
     r = UpdateResource( res,
                         MAKEINTRESOURCE(0x1230),
                         MAKEINTRESOURCE(0x4567),
                         0xabcd,
                         foo, sizeof foo );
-    ok( r == TRUE, "UpdateResouce failed\n");
+    ok( r == TRUE, "UpdateResource failed\n");
 
     r = EndUpdateResource( res, FALSE );
-    ok( r, "EndUpdateResouce failed\n");
+    ok( r, "EndUpdateResource failed\n");
 }
 
 
diff --git a/dlls/msxml3/domimpl.c b/dlls/msxml3/domimpl.c
index 83f949b..c8afd6d 100644
--- a/dlls/msxml3/domimpl.c
+++ b/dlls/msxml3/domimpl.c
@@ -64,7 +64,7 @@
     }
     else
     {
-        FIXME("Unsupported inteferace %s\n", debugstr_guid(riid));
+        FIXME("Unsupported interface %s\n", debugstr_guid(riid));
         return E_NOINTERFACE;
     }
 
diff --git a/dlls/twain_32/README b/dlls/twain_32/README
index a1b1940..0b75a36 100644
--- a/dlls/twain_32/README
+++ b/dlls/twain_32/README
@@ -6,7 +6,7 @@
 
 2. WHAT'S IMPLEMENTED
 
-- Functions that dispatch operations specified by the operation triplets to the coresponding function.
+- Functions that dispatch operations specified by the operation triplets to the corresponding function.
 
 - All the operation triplets related to the Data Source Manager are implemented.  Appplication is able to enumerate data sources and open them.
 
diff --git a/dlls/winealsa.drv/midi.c b/dlls/winealsa.drv/midi.c
index 02657f5..9667736 100644
--- a/dlls/winealsa.drv/midi.c
+++ b/dlls/winealsa.drv/midi.c
@@ -9,7 +9,7 @@
  * 		98/7 	changes for making this MIDI driver work on OSS
  * 			current support is limited to MIDI ports of OSS systems
  * 		98/9	rewriting MCI code for MIDI
- * 		98/11 	splitted in midi.c and mcimidi.c
+ * 		98/11 	split in midi.c and mcimidi.c
  * Copyright 2003      Christian Costa :
  *                     ALSA port
  *
diff --git a/dlls/winecoreaudio.drv/midi.c b/dlls/winecoreaudio.drv/midi.c
index 9198460..01eb453 100644
--- a/dlls/winecoreaudio.drv/midi.c
+++ b/dlls/winecoreaudio.drv/midi.c
@@ -7,7 +7,7 @@
  * 		98/7 	changes for making this MIDI driver work on OSS
  * 			current support is limited to MIDI ports of OSS systems
  * 		98/9	rewriting MCI code for MIDI
- * 		98/11 	splitted in midi.c and mcimidi.c
+ * 		98/11 	split in midi.c and mcimidi.c
  * Copyright 2006       Emmanuel Maillard
  *
  * This library is free software; you can redistribute it and/or
diff --git a/dlls/wined3d/basetexture.c b/dlls/wined3d/basetexture.c
index 3b83234..a4ad820 100644
--- a/dlls/wined3d/basetexture.c
+++ b/dlls/wined3d/basetexture.c
@@ -127,7 +127,7 @@
    IWineD3DBaseTexture IWineD3DBaseTexture parts follow
    ****************************************************** */
 
-/* There is no OpenGL equivalent of setLOD, getLOD, all they do it prioritize texture loading
+/* There is no OpenGL equivalent of setLOD, getLOD. All they do anyway is prioritize texture loading
  * so just pretend that they work unless something really needs a failure. */
 DWORD WINAPI IWineD3DBaseTextureImpl_SetLOD(IWineD3DBaseTexture *iface, DWORD LODNew) {
     IWineD3DBaseTextureImpl *This = (IWineD3DBaseTextureImpl *)iface;
@@ -362,7 +362,7 @@
         FIXME("Unrecognized or unsupported WINED3DTADDRESS_U value %d\n", state);
     } else {
         if(textureDimensions==GL_TEXTURE_CUBE_MAP_ARB) {
-            /* Cubemaps are always set to clamp, regardeless of the sampler state. */
+            /* Cubemaps are always set to clamp, regardless of the sampler state. */
             wrapParm = GL_CLAMP_TO_EDGE;
         } else {
             wrapParm = stateLookup[WINELOOKUP_WARPPARAM][state - minLookup[WINELOOKUP_WARPPARAM]];
@@ -420,7 +420,7 @@
         glValue = stateLookup[WINELOOKUP_MAGFILTER][state - minLookup[WINELOOKUP_MAGFILTER]];
         TRACE("ValueMAG=%d setting MAGFILTER to %x\n", state, glValue);
         glTexParameteri(textureDimensions, GL_TEXTURE_MAG_FILTER, glValue);
-        /* We need to reset the Aniotropic filtering state when we change the mag filter to WINED3DTEXF_ANISOTROPIC (this seems a bit weird, check the documentation to see how it should be switched off. */
+        /* We need to reset the Anisotropic filtering state when we change the mag filter to WINED3DTEXF_ANISOTROPIC (this seems a bit weird, check the documentation to see how it should be switched off. */
         if (GL_SUPPORT(EXT_TEXTURE_FILTER_ANISOTROPIC) && WINED3DTEXF_ANISOTROPIC == state &&
             textureDimensions != GL_TEXTURE_RECTANGLE_ARB) {
             glTexParameteri(textureDimensions, GL_TEXTURE_MAX_ANISOTROPY_EXT, samplerStates[WINED3DSAMP_MAXANISOTROPY]);
diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c
index 9b02cc7..19d2f30 100644
--- a/dlls/wined3d/context.c
+++ b/dlls/wined3d/context.c
@@ -789,7 +789,7 @@
                 if(This->activeContext && tid == This->lastThread) {
                     context = This->activeContext;
                 } else {
-                    /* This may happen if the app jumps streight into offscreen rendering
+                    /* This may happen if the app jumps straight into offscreen rendering
                      * Start using the context of the primary swapchain. tid == 0 is no problem
                      * for findThreadContextForSwapChain.
                      *
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 0801ac2..c5a7303 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -1415,7 +1415,7 @@
     WINED3DDISPLAYMODE      Mode;
     const StaticPixelFormatDesc *formatDesc;
 
-    TRACE("(%p) : Created Aditional Swap Chain\n", This);
+    TRACE("(%p) : Created Additional Swap Chain\n", This);
 
    /** FIXME: Test under windows to find out what the life cycle of a swap chain is,
    * does a device hold a reference to a swap chain giving them a lifetime of the device
@@ -5244,7 +5244,7 @@
 
     /* check that both textures have the identical numbers of levels  */
     if (IWineD3DBaseTexture_GetLevelCount(pDestinationTexture)  != IWineD3DBaseTexture_GetLevelCount(pSourceTexture)) {
-        WARN("(%p) : source (%p) and destination (%p) textures must have identicle numbers of levels, returning WINED3DERR_INVALIDCALL\n", This, pSourceTexture, pDestinationTexture);
+        WARN("(%p) : source (%p) and destination (%p) textures must have identical numbers of levels, returning WINED3DERR_INVALIDCALL\n", This, pSourceTexture, pDestinationTexture);
         hr = WINED3DERR_INVALIDCALL;
     }
 
diff --git a/dlls/wined3d/directx.c b/dlls/wined3d/directx.c
index 679dcbb..afd012a 100644
--- a/dlls/wined3d/directx.c
+++ b/dlls/wined3d/directx.c
@@ -814,7 +814,7 @@
                  * a fixed function pipeline anymore.
                  *
                  * So this is just a check to check that our assumption holds true. If not, write a warning
-                 * and reduce the number of vertex samplers or propably disable vertex texture fetch.
+                 * and reduce the number of vertex samplers or probably disable vertex texture fetch.
                  */
                 if(gl_info->max_vertex_samplers &&
                    MAX_TEXTURES + gl_info->max_vertex_samplers > gl_info->max_combined_samplers) {
diff --git a/dlls/wined3d/resource.c b/dlls/wined3d/resource.c
index 6f0446a..17e540b 100644
--- a/dlls/wined3d/resource.c
+++ b/dlls/wined3d/resource.c
@@ -88,7 +88,7 @@
 
     if (This->resource.wineD3DDevice != NULL) {
         IWineD3DDevice_ResourceReleased((IWineD3DDevice *)This->resource.wineD3DDevice, iface);
-    }/* NOTE: this is not really an error for systemmem resources */
+    }/* NOTE: this is not really an error for system memory resources */
     return;
 }
 
diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c
index a374c76..49a8222 100644
--- a/dlls/wined3d/state.c
+++ b/dlls/wined3d/state.c
@@ -3229,9 +3229,9 @@
 
         /* min(WINED3D_ATR_SIZE(position),3) to Disable RHW mode as 'w' coord
            handling for rhw mode should not impact screen position whereas in GL it does.
-           This may result in very slightly distorted textures in rhw mode, but
-           a very minimal different. There's always the other option of
-           fixing the view matrix to prevent w from having any effect
+           This may result in very slightly distorted textures in rhw mode.
+           There's always the other option of fixing the view matrix to
+           prevent w from having any effect.
 
            This only applies to user pointer sources, in VBOs the vertices are fixed up
          */
@@ -3278,9 +3278,9 @@
     /*  WARNING: Data here MUST be in RGBA format, so cannot      */
     /*     go directly into fast mode from app pgm, because       */
     /*     directx requires data in BGRA format.                  */
-    /* currently fixupVertices swizzles the format, but this isn't */
+    /* currently fixupVertices swizzles the format, but this isn't*/
     /* very practical when using VBOS                             */
-    /* NOTE: Unless we write a vertex shader to swizzle the colour */
+    /* NOTE: Unless we write a vertex shader to swizzle the colour*/
     /* , or the user doesn't care and wants the speed advantage   */
 
     if (sd->u.s.diffuse.lpData || sd->u.s.diffuse.VBO) {
diff --git a/dlls/wined3d/vertexbuffer.c b/dlls/wined3d/vertexbuffer.c
index 0c4b2c2..2472066 100644
--- a/dlls/wined3d/vertexbuffer.c
+++ b/dlls/wined3d/vertexbuffer.c
@@ -245,7 +245,7 @@
     DWORD type;
 
     /* Ignore attributes that do not have our vbo. After that check we can be sure that the attribute is
-     * there, on nonexistant attribs the vbo is 0.
+     * there, on nonexistent attribs the vbo is 0.
      */
     if(attrib->VBO != This->vbo) return FALSE;
 
diff --git a/dlls/wineoss.drv/midi.c b/dlls/wineoss.drv/midi.c
index 10e026f..4245ad0 100644
--- a/dlls/wineoss.drv/midi.c
+++ b/dlls/wineoss.drv/midi.c
@@ -9,7 +9,7 @@
  * 		98/7 	changes for making this MIDI driver work on OSS
  * 			current support is limited to MIDI ports of OSS systems
  * 		98/9	rewriting MCI code for MIDI
- * 		98/11 	splitted in midi.c and mcimidi.c
+ * 		98/11 	split in midi.c and mcimidi.c
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
diff --git a/tools/widl/typelib_struct.h b/tools/widl/typelib_struct.h
index 89bbfd8..79b86b9 100644
--- a/tools/widl/typelib_struct.h
+++ b/tools/widl/typelib_struct.h
@@ -97,7 +97,7 @@
 /*2*/MSFT_pSeg pImpInfo;     /* table with info for imported types */
 /*3*/MSFT_pSeg pImpFiles;    /* import libraries */
 /*4*/MSFT_pSeg pRefTab;      /* References table */
-/*5*/MSFT_pSeg pLibtab;      /* always exists, alway same size (0x80) */
+/*5*/MSFT_pSeg pLibtab;      /* always exists, always same size (0x80) */
                              /* hash table w offsets to guid????? */
 /*6*/MSFT_pSeg pGuidTab;     /* all guids are stored here together with  */
                              /* offset in some table???? */
diff --git a/tools/wrc/parser.y b/tools/wrc/parser.y
index 0af5330..94ce44c 100644
--- a/tools/wrc/parser.y
+++ b/tools/wrc/parser.y
@@ -442,7 +442,7 @@
 		}
 	/*
 	 * The following newline rule will never get reduced because we never
-	 * get the tNL token, unless we explicitely set the 'want_nl'
+	 * get the tNL token, unless we explicitly set the 'want_nl'
 	 * flag, which we don't.
 	 * The *ONLY* reason for this to be here is because Berkeley
 	 * yacc (byacc), at least version 1.9, has a bug.
